일기

3.31 Apple 온라인 세션: 앱에 SwiftUI 적용하기

Downey 2025. 4. 1. 15:31

링크드인에서 포스팅 된 게시물 중 Apple 온라인 세션에 대한 소개가 있었다.

2월 말 즈음에 신청을 했었는데 시간이 금방 흘러버렸다.

 

해당 세션은 평소와 다르게 라이브 코딩을 하거나, 코드베이스를 주로 보며 진행하는 세션이었다.

이전에도 Apple 온라인 세션을 들어 본 적이 있었는데, 실제로 코드베이스를 보며 진행하는 세션이 훨씬 더 만족스럽고, 바로 쓸 수 있을 것 같다는 체감이 있었다.

 

해당 세션은 나에게 아주 적합한 세션은 아니었다.

내가 목표로하는 DeploymentTargete은 16이며, 제시해 주신 사용 예시와 이론은 대체로 아는 것이었다.

하지만 공부를 시작 한 지 얼마되지 않았다면 굉장히 좋은 세션이었다.

 

아래는 세션에 대한 간단한 요약이다.

SwiftUI 기초

SwiftUI를 왜 쓸까?

  1. 자동으로 해주는 기능들 ( 정렬, spacing 등 )
  2. 여러 플랫폼에 adaptive하게 적용 됨 ( iOS, tvOS, visionOS등 각 OS에 적합한 UI를 알아서 보여줌 )
  3. 다국어를 위해 좌측읽기, 우측읽기에 따라서 UI가 배열됨 ( 아랍권 국가 )
  4. 접근성(사용자 설정에 따라서 글자 크기 조절등)

SwiftUI의 동작

  1. @State의 내부동작
    1. Source of truth
    2. View는 struct. 내부에 값이 변경되는 것을 자신이 관측할 수 없음. 그러면 변경되는 것을 어떻게 아는것이지?
    3. SwiftUI 자체 내부의 container가 존재함.
  2. @Bindable, @Binding 등에 따른 Container 내부 값에 대한 참조
  3. @Obserable 매크로

데이터흐름 살펴보기

UIKit에서 SwiftUI를 사용하거나

SwiftUI에서 UIKit을 사용하거나 

상황에 따른 의존성 주입하여 View 혹은 UIViewController를 update

예시로 HealthKit을 사용한 View 구현

 

SwiftUI 성능 최적화 하기

  1. View 자체의 의존성 관리
  2. View를 작게 분리하기
  3. 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/