Video wird geladen...

Video konnte nicht geladen werden

Zur Startseite

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 Aufrufe • vor 2 Jahren •via X (Twitter)

8 Kommentare

Profilbild von Maxim Bazarov
Maxim Bazarovvor 2 Jahren

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

Profilbild von StewartLynch 🇨🇦
StewartLynch 🇨🇦vor 2 Jahren

Thanks Maxim. Not sure how I missed that.

Profilbild von Parsa
Parsavor 2 Jahren

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.

Profilbild von Igor Tarasenko
Igor Tarasenkovor 2 Jahren

Expand the macro. This will help in your understanding.

Profilbild von DSWH
DSWHvor 2 Jahren

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

Profilbild von Andres Raigoza 👨‍💻
Andres Raigoza 👨‍💻vor 2 Jahren

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

Profilbild von DSWH
DSWHvor 2 Jahren

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

Profilbild von DART Meadow
DART Meadowvor 2 Jahren

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.

Ähnliche Videos