@AppStorage ObservableObject 内部 - 如何从属性包装器内部触发"objectWi



在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属性包装器中调用ObservableObjectobjectWillChange发布者?他们是否正在使用一些内部 API?或者是否可以使用任何属性包装器执行此操作?

我知道这个"魔力"的一部分是DynamicProperty协议。但仅凭这一点还不足以引发objectWillChange事件。我的猜测是,这与他们用于@Published的逻辑相同,据我所知,现在也不能真正"储备工程"。

有什么想法吗?

谢谢!

上次我检查时,有一个类扩展可以修改类以在@Published属性的willSet中添加对objectWillChange.send()的调用,并且我假设也@AppStorage属性。我还记得如果你自己定义objectWillChange那么这些机制就会被关闭。当我对它进行逆向工程时,代码对我来说看起来非常脆弱,我确实认为自己打电话给objectWillSend可能更安全。

最新更新