Great SwiftUI 정리
- iOS/SwiftUI
- 2023. 12. 27.
조건식 보다는 모디파이어를 선호하라
- 애니메이션 보간 가능하게하고, 성능 향상에 도움이 됨
- 뷰 트리를 유지하는지, 바꾸는지의 차이
"브랜치는 훌륭하며, SwiftUI에는 이유가 있다. 하지만 불필요하게 사용될 때, 그들은 열악한 성능, 놀라운 애니메이션, 그리고 심지어 상태 손실을 초래할 수 있다.
브랜치를 도입할 때, 잠시 멈추고 여러 뷰를 나타내는지 아니면 같은 뷰의 두 상태를 나타내는지 고려하세요."
관련영상
https://developer.apple.com/videos/play/wwdc2021/10022/?time=1498
State and dependencies
- let 을 우선으로 사용하라
- 부모 뷰로 부터 값을 전달 받고 이 값을 바꿔야하는 경우 Binding 사용
- Binding과 동등한 레벨이나 클래스로 구성할 때 ObservedObject 사용
- 뷰 내부에서 변경이 필요한 프로퍼티의 경우 State 사용
State는 Private여야 한다
- 뷰가 의존하는 외부 데이터와 그 자체로 생성하는 것을 명확히 하기 위함
- 생성된 이니셜라이저의 코드 자동 완성을 더 정확하게 만든다
뷰 작성 할 때 기억할 것
- 단일로 사용되는 상수를 피하라
- 뷰는 앱/도메인 지식이 없어야 한다 (참조된 이벤트를 실행하는 구조가 되어야 함)
- 부모 뷰로 부터 받는 공간으로 크기 결정할 수 있음 (UIScreen 접근하지 않기, 뷰 크기 구해야할 때는 GeometryReader 사용)
- 서브 뷰를 Struct로 분리할 때, 컨테이너 뷰(ZStack, VStack, HStack...)를 감싸줄 것
- body를 심플하게 만들것 (WWDC Data Essentials에서 언급했듯이, 디스패치를 포함한 부작용을 만드는 것은 뷰의 생성을 늦추고 프레임 드롭을 유발할 수 있음)
- 중복 뷰 업데이트를 피하라 (관심있는 프로퍼티만 구독하라)