Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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 스위프트 퍼포먼스 세션 리뷰

세션 선정 과정

  • 참석자들이 2024년 WWDC 세션 중 "Explore Swift performance" 선택
  • 스위프트 UI 관련 내용은 아니지만 스위프트 언어 자체에 대한 내용이라 선정됨

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

라이브 액티비티 구조

  • 위젯과 유사한 구조로 별도의 타겟 추가 필요
  • 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

AltStyle によって変換されたページ (->オリジナル) /