Avatar
Avatar
Yuta Saito
なので、現状のコンパイラのactor-isolated判定がゆるく、sinkに渡したクロージャが呼び出し元のMainActor-isolatedを引き継いだため、MainActorでisolatedされているUILabelへの代入がawait無しでできた。しかし実際はスレッドが変わっているのでisolatedではなく、実行時に怒られる。 ということではないですかね。 (edited)
よく考えたらsetterだからasyncにできないし、nonisolatedなんでしょうか?setterだけnonisolatedとかできるのかわからないですが。元がObj-Cだし、余計複雑?nonisolatedじゃなくて、MainActorの外からsetterが見えないのが正解?