Avatar
mainactorが保証されてるのはクロージャを作るところまで
Task.detachedのクロージャ内はcontextを引き継がないので、途切れて引き継がれないのではない
そうすると、 @escaping クロージャの actor context 引き継ぎとは、何(誰)の context を引き継ぐのでしょうか?
5:43 AM
A closure that is not @Sendable cannot escape the concurrency domain in which it was formed.
https://github.com/apple/swift-evolution/blob/main/proposals/0306-actors.md そもそも escape できない?
5:44 AM
そうすると、 @MainActor で escape できるのがおかしい? @swift-5.6.3 func run(_ operation: () -> Void) { operation() } func runEscaping(_ operation: @escaping () -> Void) { operation() } actor Foo { var count: Int = 0 func countUp() { run { count += 1 } runEscaping { [weak self] in guard let self = self else { return } print(self.count) } } }