Avatar
Avatar
omochimetaru
反しないと思います ↓に考えを書いています https://discord.com/channels/291054398077927425/291211035438874625/920563280509018114 (edited)
考えました&読みました。iPhoneからなので読みにくいかもだけど。 @MainActorなクラスのサブクラスからメソッドをオーバーライドするときに、asyncでなくす(同期にする)ことも可能なんじゃないかと思いました。同期の方が型が狭いし。オーバーライドしてactor-isolatedなAPIや非同期APIを触らないのなら。superでオーバーライドされるメソッドを呼ぶ場合は必然的にawaitが必要になり、asyncになる。もしくは、オーバーライド先にも@MainActorを付けて、同期呼び出しする。もしスーパークラスのインスタンスとして扱われて同期的にそのメソッドが呼ばれても、スレッドセーフなので安全。 サブクラスのインスタンスとして扱われてる場合は同期に見えるから、「無意味にasync化」が起こらない。 オーバーライドでも勝手に@MainActor化しない方が、明示的でいい気がしてきた。 (edited)