3.31 Apple 온라인 세션: 앱에 SwiftUI 적용하기
링크드인에서 포스팅 된 게시물 중 Apple 온라인 세션에 대한 소개가 있었다.
2월 말 즈음에 신청을 했었는데 시간이 금방 흘러버렸다.
해당 세션은 평소와 다르게 라이브 코딩을 하거나, 코드베이스를 주로 보며 진행하는 세션이었다.
이전에도 Apple 온라인 세션을 들어 본 적이 있었는데, 실제로 코드베이스를 보며 진행하는 세션이 훨씬 더 만족스럽고, 바로 쓸 수 있을 것 같다는 체감이 있었다.
해당 세션은 나에게 아주 적합한 세션은 아니었다.
내가 목표로하는 DeploymentTargete은 16이며, 제시해 주신 사용 예시와 이론은 대체로 아는 것이었다.
하지만 공부를 시작 한 지 얼마되지 않았다면 굉장히 좋은 세션이었다.
아래는 세션에 대한 간단한 요약이다.
SwiftUI 기초
SwiftUI를 왜 쓸까?
- 자동으로 해주는 기능들 ( 정렬, spacing 등 )
- 여러 플랫폼에 adaptive하게 적용 됨 ( iOS, tvOS, visionOS등 각 OS에 적합한 UI를 알아서 보여줌 )
- 다국어를 위해 좌측읽기, 우측읽기에 따라서 UI가 배열됨 ( 아랍권 국가 )
- 접근성(사용자 설정에 따라서 글자 크기 조절등)
SwiftUI의 동작
- @State의 내부동작
- Source of truth
- View는 struct. 내부에 값이 변경되는 것을 자신이 관측할 수 없음. 그러면 변경되는 것을 어떻게 아는것이지?
- SwiftUI 자체 내부의 container가 존재함.
- @Bindable, @Binding 등에 따른 Container 내부 값에 대한 참조
- @Obserable 매크로
데이터흐름 살펴보기
UIKit에서 SwiftUI를 사용하거나
SwiftUI에서 UIKit을 사용하거나
상황에 따른 의존성 주입하여 View 혹은 UIViewController를 update
예시로 HealthKit을 사용한 View 구현
SwiftUI 성능 최적화 하기
- View 자체의 의존성 관리
- View를 작게 분리하기
- Instruments의 Profiling 도구를 사용하여 특정 View가 변경되는 횟수를 관측하며 최적화
발표자료를 만들며 참조하셨다는 링크
[WWDC19] Getting Started with Instruments https://developer.apple.com/videos/play/wwdc2019/411
[WWDC21] Understand and eliminate hangs from your app https://developer.apple.com/videos/play/wwdc2021/10258
[WWDC23] Analyze hangs with Instruments https://developer.apple.com/videos/play/wwdc2023/10248/
[WWDC23] Demystify SwiftUI performance https://developer.apple.com/videos/play/wwdc2023/10160/