Avatar
こういうことですね @MainActor func myFunc() { self.foo = .... // 合法 someActorsFunc { self.foo = ... // 違法 Task.init { // 合法 self.foo = ... // 違法 } } } @MainActor func myFunc() { self.foo = .... // 合法 DispatchQueue.global().async { self.foo = ... // 脱法 Task.init { // 脱法 self.foo = ... //脱法 } } } @MainActor func myFunc() { self.foo = .... // 合法 DispatchQueue.global().async { self.foo = ... // 脱法 Task.init { // 脱法 await MainActor.run { self.foo = .... // 合法 Task.init { // 合法 self.foo = ... //合法 } } } } } (edited)
👀 1
👍🏻 2
1:59 AM
メンバへのアクセス同様、Task.initの宣言にも脱法性がある
1:59 AM
1度脱法コンテキストに落ちたらその中のTaskの宣言も、その中のコンテキストも汚染されています (edited)
2:01 AM
本来なら脱法コンテキストのTask宣言は違法にして欲しかったけど、まあスケジュール的に仕様組むのも間に合わなかったんじゃないか