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)