Skip to content

Boost‐SwiftUI‐2024.08.29(목).md

유정주 JeongJu Yu edited this page Aug 30, 2024 · 3 revisions

원본 텍스트 파일

Boost‐SwiftUI‐2024.08.29(목).txt


스터디 시간 및 참여자

  • 2024.08.29 목 오후 9:09 ・ 166분 54초
  • 권승용 김대황 정다함 유정주 이준복 홍승현
  • 클로버노트를 이용해 회의 내용을 기록하고, AI를 이용해 요약, 편집했습니다.

iOS 레이아웃 시스템 개요

레이아웃 프로토콜과 컴포넌트

  • 주요 내용은 그리드, 레이아웃 프로토콜, ViewThatFits, AnyLayout에 관한 것이었음
  • ViewThatFits는 HStack과 VStack 중 화면에 더 적합한 레이아웃을 선택하는 개념
  • HStack은 수평으로, VStack은 수직으로 늘어남
  • 다양한 레이아웃 옵션 중 화면에 맞는 것을 제공할 수 있는 유용한 도구

AnyLayout의 특징

  • AnyLayout은 런타임에 레이아웃을 동적으로 변경할 수 있음
  • 예: HStack에서 VStack으로 전환 가능
  • 뷰의 아이덴티티를 보존하면서 레이아웃 변경 시 애니메이션도 함께 처리

레이아웃 프로세스의 이해

  • sizeThatFits와 placeSubviews 과정이 iOS의 뷰 사이즈 결정 로직과 일치함
  • 이 프로세스를 이해하지 못하면 동작 원리를 파악하기 어려울 수 있음
  • 서브뷰들의 sizeThatFits를 호출하여 그 결과를 사용하는 점이 특이함

레이아웃 구현의 복잡성

  • 실제 구현 시 단순히 프레임을 지정하는 것보다 복잡함
  • 레이아웃 프로토콜 채택 후 직접 구현해보니 어려움을 느낌
  • sizeThatFits를 통해 뷰의 크기가 결정되는 과정이 흥미로움

스페이싱과 디자인 고려사항

  • 스페이싱 설정이 매우 세밀하고 복잡함
  • 위아래, 좌우 간격이 다르며, 인접 요소(텍스트, 이미지 등)에 따라 달라짐
  • 플랫폼별로도 다른 스페이싱 적용
  • Apple의 디자인에 대한 세심한 접근 방식이 드러남

카카오 로그인 escaping 클로저를 Continuation으로 바꿀 때 주의사항

비동기 처리와 컨티뉴에이션 사용

  • 컨티뉴에이션을 사용하면 앱이 충돌하지 않게 할 수 있음
  • 자동 로그인 시 앱이 충돌하는 문제가 있었음
  • 카카오 로그인 컨트롤러 구현 시 두 가지 처리가 필요했음:
  • 메인 액터 처리
  • 컨티뉴에이션의 명시적 해제

카카오 로그인 구현 시 주의사항

  • 컴플리션 핸들러가 여러 번 호출되는 문제가 있었음
  • 메인 액터 격리(isolation) 문제도 발생
  • 로그인 시작점을 메인 액터로 처리하고, 각 단계마다 컨티뉴에이션 할당 및 해제를 명시적으로 관리함

비동기 처리 유틸리티 개발

  • 비동기 처리를 위한 유틸리티를 개발하여 재사용
  • 반환 방식을 Concurrency로 통일하면 사용이 편리해짐

모듈화와 관리 문제

  • 유틸리티의 관리 주체가 불분명한 것이 문제
  • 관리 주체를 명확히 정하면 코드 기여에 도움이 될 것
  • 각 기능(이미지 저장, 컬러 저장, 폰트 저장 등)마다 저장 방식이 다를 수 있어 모듈화에 어려움이 있음
Clone this wiki locally