Open3
Data Flow Through SwiftUI - WWDC2019 -
WWDC2019セッション「Data Flow Through SwiftUI」の要約
Principles of Data Flow
- データとは何か
- UIを動かす情報
- モデルデータもデータ
- データフローのツール
- 基本理念
- データを読み込む度に依存性を構築していること(Data Access as a Dependency)
- データに合わせ、新しい値が示されるのが依存性
- SwiftUIは宣言的で、手動での同期や無効化は不要で、依存性をフレームワークに書くだけ
- 全てのデータは単一のデータソースを持つこと(Source of Truth)
- 常に同期させる必要があるため、データソースの複製は、バグや矛盾をうむ
- そこでデータを共通の祖先まで引き上げ、2つの子要素に参照させる
- データソースがビューとデータ間のバグを排除する
- データを読み込む度に依存性を構築していること(Data Access as a Dependency)
- 基本理念

Anatomy of a View Update
- システムが動的に容量を作れば、初期値を指定する必要がある
- Viewは頻繁に更新されるが、storageは保持される
struct PlayerView: View {
let episode: Episode
@State private var isPlaying: Bool = false // 変数にはview上で容量が割り当てられ、追跡できる
var body: some View {
VStack {
Text(episode.title)
Text(episode.showTitle).font(.caption).foregroundColor(.gray)
Button(action: {
self.isPlaying.toggle()
}) {
Image(systemName: isPlaying ? "pause.circle" : "play.circle")
}
}
}
}


- ボタンを押下した時の挙動
-
Stateの変数が変わると、SwiftUIが動き出す- ボタンでアクションを実行し、Stateを切り替える
- ボタンでアクションを実行し、Stateを切り替える
-
Stateが変化すると、Viewを有効にする
-

-
bodyとその子要素を再計算する - 全ての変化は下に流れていく
- 変化し部分のみをレンダリングするので、とても効率的

9:26