CityView is a custom View in a demo project , But the Xcode's documents says it was a @MainActor , and CityView isn't defined as @MainActor in project .
How does the Xcode's help document knows it was a @MainActor?
Is it means anything conform to View protocol is a @MainActor?
Is it means anything conform to
View
protocol is a@MainActor
?
Yes, because the View
protocol is marked @MainActor
.
@MainActor @preconcurrency
protocol View { ... }
Types that conform to it are implcitly marked @MainActor
too. Note that being isolated to the main actor is not a requirement of the protocol. You can opt out by adding nonisolated
:
nonisolated struct CityView: View { ... }
Before Swift 6.2, you can do
struct CityView: View, _RemoveGlobalActorIsolation { ... }