Skip to content

Boost‐SwiftUI‐2024.07.30(화).md

유정주 JeongJu Yu edited this page Oct 16, 2024 · 3 revisions

원본 텍스트 파일

Boost-SwiftUI-240730.txt


스터디 시간 및 참여자

  • 2024.07.30 화 오후 9:02 ・ 127분 46초
  • 권승용 유정주 김대황 윤동주 홍승현
  • 클로버노트를 이용해 회의 내용을 기록하고, GPT를 이용해 요약, 편집했습니다.

WWDC 2024 스위프트 퍼포먼스 세션 리뷰

라이브 액티비티 구현 관련 논의

라이브 액티비티 구조

  • 위젯과 유사한 구조로 별도의 타겟 추가 필요
  • ActivityKit 프레임워크 import 필요
  • 콘텐츠 스테이트를 미리 정의하고 값 전달

데이터 바인딩 이슈

  • 뷰와 액티비티 사이 바인딩 처리 불가
  • 옵저버블 객체를 활용해 값 변화 감지 및 강제 주입 방식으로 구현
  • 위젯과 유사한 통신 방식으로 추정됨

구현 방식 제안

  • 옵저버블 객체에 퍼블리셔 선언
  • 값 변경 시 퍼블리시 메서드로 액티비티에 값 전달
  • 뷰 모델에서 관리하는 방식 제안

기타 논의 사항

  • 온어피어 vs 태스크 사용에 대한 고민
  • 뷰의 생명주기와 연동된 작업 처리를 위해 태스크 선호

코드 컨벤션 및 스타일 가이드 논의

뷰 구조화 방식

  • 구조체 사용 vs @ViewBuilder 사용에 대한 비교
  • 성능 최적화 관점에서는 큰 차이 없음
  • 가독성과 유지보수성 측면에서 선호도 차이

상수 정의 방식

  • 하드코딩 vs 상수 추출에 대한 의견 교환
  • 변경 가능성이 낮은 UI 관련 수치는 하드코딩 선호
  • 재사용성이 높은 값만 상수로 추출 권장

주석 사용에 대한 견해

  • 주석 사용 최소화 vs 문서화 수준의 주석 작성
  • 코드의 자체 설명력 중요성 강조
  • 복잡한 비즈니스 로직이나 기획 의도 설명 시 주석 활용

조건문 작성 스타일

  • guard문 vs if-else문 사용에 대한 논의
  • 코드 흐름과 가독성을 고려한 유연한 사용 권장

SwiftUI 레이아웃 관련 이슈

다이나믹 아일랜드 애니메이션 구현

  • 음성 데시벨 변화에 따른 그래프 표현 방식 논의
  • 환경 객체(EnvironmentObject) 사용에 대한 고민
  • 데이터 흐름과 뷰 업데이트 메커니즘 설계 방안

복잡한 레이아웃 구현 사례

  • 의료 앱에서 주사 부위 선택 UI 구현 과정 공유
  • 이미지 오버레이와 텍스트 배치의 정밀 조정 기법
  • 디바이스 크기 변화에 대응하는 동적 레이아웃 처리 방식

SwiftUI의 예측 불가능한 동작

  • 텍스트 길이에 따른 뷰 위치 변화 현상 분석
  • Group, ForEach 내부의 모디파이어 적용 범위 확인
  • Overlay 사용 시 발생하는 특이 동작에 대한 토론

결론

  • SwiftUI의 선언적 특성으로 인한 예측 어려움 인정
  • 지속적인 실험과 경험 공유의 중요성 강조
  • 코드 컨벤션과 아키텍처 선택의 유연성 필요성 확인

(레거시) SwiftUI 학습 세션 요약

디자인 시스템

  • 디자인 시스템의 필요성과 개발 방법에 대해 논의했습니다. 작은 디자인 시스템을 만들어 보자는 제안이 있었고, 이를 위해 SPM(Swift Package Manager)을 활용하여 협업하는 방안을 고려했습니다.

라이브 액티비티와 다이나믹 아일랜드

  • 라이브 액티비티다이나믹 아일랜드의 구현 방법에 대해 토론했습니다. 변수 변화 감지를 위해 옵저베이션을 활용하고, 뷰 모델을 별도로 구현해야 할 필요성에 대해 논의했습니다.

자식 뷰로 전달하는 상태 변화 전달

  • View의 depth가 깊을 때 효율적으로 상태 변화를 전달하는 방법을 토론했습니다.

상수화 토론

  • 적절한 상수화에 대해 토론했습니다. 모든 숫자를 상수화하는 것은 비효율적이라는 의견이 있었습니다. 반복되거나 공통된 숫자나 리소스를 상수화하는 것이 좋다는 의견이 있었습니다.

task와 onAppear

  • task와 onAppear의 차이점에 대해 토론했습니다.
  • View가 사라질 때 onAppear는 작업이 취소되지 않지만, task는 작업이 취소되어 더 효율적이라는 논의를 했습니다.

기타 iOS 개발 이슈

  • 위젯과 관련된 내용도 다루었으며, 위젯 구현 시 통신하는 방식에 대해 경험을 공유했습니다.
  • 추가로, 피그마에서 색상 설정에 대한 질문과 답변도 오갔습니다.
Clone this wiki locally