最近読んだもの6 - SwiftUI 関連
- What are Sendable and @Sendable closures in Swift?
- 以前よりは
Sendable
に関する理解が高くなった actor
はデフォルトでSendable
- closure に
@Sendable
をつけると、その中で capture された値がSendable
でない場合は warning になる(設定が必要) - struct は暗黙的に
Sendable
になっている(ただしプロパティ全てがSendable
なら)- 同様に class でもそれが
final
ならSendable
- 同様に class でもそれが
- 以前よりは
- Conditional layouts in SwiftUI
- iOS 16 から
Layout
protocol が導入された - conditional に layout を変えたい場合、
AnyLayout
を使ってより綺麗に書けるようになった
- iOS 16 から
- Structural identity in SwiftUI
- conditional body の場合、
some View
は_ConditionalContent<LoggedUser, AnonymousUserView>
などになる - 予期せぬ recreation や animation が発生することがある
- inline modifier などで structure identity を保持するのがいい
- conditional body の場合、
- Pitfall of Nested ObservableObject
- nest された
ObservableObject
だと変更が通知されないので、マニュアルで発火させないといけない
- nest された
- onTapGesture(count:coordinateSpace:perform:)
- iOS 16 から SwiftUI でも tap gesture を
SwiftUI.View
単位につけることができるようになった
- iOS 16 から SwiftUI でも tap gesture を
- Mastering NavigationStack in SwiftUI. Navigator Pattern.
NavigationView
は deprecated になり、iOS 16 からNavgationStack
が登場したnavigationDestination(for:destination:)
で遷移先を統一的に書けるように
- Mastering NavigationStack in SwiftUI. NavigationPath.
- Three Ways to Refactor Massive SwiftUI Views
- SwiftUI の View が大きくなった時の分割、リファクタリングの方法