Dispatch / DispatchQueue
Dispatchとは?急送、送り出す、派遣する、だそうです。なるほど処理させるという感じですね

Dispatch | Apple Developer Documentation
Execute code concurrently on multicore hardware by submitting work to dispatch queues managed by the system.
Publishing changes from background threads is not allowed; make sure to publish values from the main thread (via operators like receive(on:)) on model updates.
@Published変数はバックグラウンドスレッズで更新できません!
publish valuesは必須。と
つまりはメインスレッドでということでした。
DispatchQueue.global().async {
// 重い処理をバックグラウンドスレッドで実行
let result = performHeavyTask()
// メインスレッドで値を更新
DispatchQueue.main.async {
self.somePublishedProperty = result
}
}DispatchQueue.global() バックグラウンド
DispatchQueue.main メインスレッド
ということですね
yourPublisher
.receive(on: DispatchQueue.main) // メインスレッドで値を受け取る
.sink { value in
self.somePublishedProperty = value
}
.store(in: &cancellables)yourPublisher は @Publishedを内包するインスタンスや
combineフレームワークで作成したパブリッシャーもあると
Swift Concurrency
Task {
let result = await performHeavyTask()
await MainActor.run {
self.somePublishedProperty = result
}
}Task内では await MainActor.runとメインスレッドで実行するそう
Task iOS13..0以降

Task | Apple Developer Documentation
A unit of asynchronous work.
Task: 非同期処理を簡単に記述できる仕組み。
キャンセル対応: 必要に応じてTask.checkCancellation()を活用。
Task actor: 共有状態の安全な管理。
TaskGroup: 複数タスクを効率的に処理。
@MainActor: UI関連のコードを安全にメインスレッドで実行。
目新しいワードが続々と出てきて^^;



コメント