Hi,
It is known that if a SwiftUI view contains an @ObservedObject
or @StateObject
property, the View will inherit @MainActor
isolation from the property wrappers.
Similarly, the body
view-builder is also marked @MainActor
.
What I'm wondering is why the whole SwiftUI View protocol isn't marked @MainActor
. It seems to be a deliberate decision, but AFAICT it would make a lot of sense for all data and operations defined in a view to have main-actor isolation unless marked nonisolated
.
I'm currently adding @MainActor
annotations to an existing codebase, and it's a bit awkward that some views automatically gain this attribute one way or another, while others need it explicitly applied. Is there a rationale that can be shared, or is this something which may be revised in future versions of the framework?