Loading video...

Video Failed to Load

Go Home

I have come across something with the Observation framework that is confusing me so if there are any #SwiftUI Observation framework experts out there that can explain this to me, I would be forever grateful. Why I don’t have to define the object as a State object?

10,172 views • 2 years ago •via X (Twitter)

8 Comments

Maxim Bazarov's profile picture
Maxim Bazarov2 years ago

That’s because SwiftUI automatically tracks any observable properties that a view’s body reads directly.

StewartLynch 🇨🇦's profile picture
StewartLynch 🇨🇦2 years ago

Thanks Maxim. Not sure how I missed that.

Parsa's profile picture
Parsa2 years ago

The first code's equivalent with the old combine stuff is marking the MyObject as an ObservedObject. This binds it to the lifecycle of the struct, meaning that the property changes retrigger the body, and any re-invocation of the ContentView itself would create a new MyObject. It's due to how the new Observable grabs references of the component that is listening to a certain keypath (\.value in this case) and notifies them of the change.

Igor Tarasenko's profile picture
Igor Tarasenko2 years ago

Expand the macro. This will help in your understanding.

DSWH's profile picture
DSWH2 years ago

The macro sets state. The protocol expects you to set state

Andres Raigoza 👨‍💻's profile picture
Andres Raigoza 👨‍💻2 years ago

This shows how efficient the macro is compared to ObservableObject, it runs the body but it doesn’t recreate the View

DSWH's profile picture
DSWH2 years ago

The macro is new. I’m still working on a m1 :(. Older Xcode.

DART Meadow's profile picture
DART Meadow2 years ago

I think the increment operator syntax: += , is colliding -for itself as a variable in the production code below the observable code block, you might need additional syntax for the observable API.

Related Videos