actor
は入れ替えてくれそうな感じがしますね。 DispatchQueue
も DispatchWorkItem
に qos
を指定できるみたいですね。使ったことなかった。 https://developer.apple.com/documentation/dispatch/dispatchworkitem
MainActor
でも priority
を考慮してくれそう。 override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) Task.detached(priority: .background) { @MainActor in do { let user = try await fetchUser(for: userID) self.user = user } catch { // エラーハンドリング } } }
@MainActor
のクロージャ式が丸ごと↓の block
に突っ込まれるイメージ? DispatchQueue.main.async(DispatchWorkItem(qos: .background, block: /* ここ */))
(edited)