在iOS 14.5中,Apple对@AppStorage
进行了更改,以便可以在ObservableObject
中正确使用它:
AppStorage 属性包装器现在在包含在 ObservableObject 中时按预期工作,从而导致系统发出 objectWillChange 发布者。(65562845)
- 来源: https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-14_5-release-notes
他们如何设法从@AppStorage
属性包装器中调用ObservableObject
的objectWillChange
发布者?他们是否正在使用一些内部 API?或者是否可以使用任何属性包装器执行此操作?
我知道这个"魔力"的一部分是DynamicProperty
协议。但仅凭这一点还不足以引发objectWillChange
事件。我的猜测是,这与他们用于@Published
的逻辑相同,据我所知,现在也不能真正"储备工程"。
有什么想法吗?
谢谢!
上次我检查时,有一个类扩展可以修改类以在@Published
属性的willSet
中添加对objectWillChange.send()
的调用,并且我假设也@AppStorage
属性。我还记得如果你自己定义objectWillChange
那么这些机制就会被关闭。当我对它进行逆向工程时,代码对我来说看起来非常脆弱,我确实认为自己打电话给objectWillSend
可能更安全。