objective-c – 可以使用KVO来观察全局变量吗?

objective-c – 可以使用KVO来观察全局变量吗?,第1张

概述我有一个gloabal变量User * currentUser ;,可能会从任何类更改.我想在任何变化时将它保存到NSUserDefaults. 是否可以将KVO用于这样的全局变量,还是有其他方法可以实现类似的效果? 我添加了我的app delegate作为currentUser的观察者: [self addObserver:self forKeyPath:@"currentUser" optio 我有一个gloabal变量User * currentUser ;,可能会从任何类更改.我想在任何变化时将它保存到NSUserDefaults.

是否可以将KVO用于这样的全局变量,还是有其他方法可以实现类似的效果?

我添加了我的app delegate作为currentUser的观察者:

[self addobserver:self forKeyPath:@"currentUser" options:NSkeyvalueObservingOptionNew context:nil];

-(voID)observeValueForKeyPath:(Nsstring *)keyPath                     ofObject:(ID)object                       change:(NSDictionary *)change                      context:(voID *)context{    if ([keyPath isEqualToString:@"currentUser"])    {         NSDictionary * userDict = [currentUser dictionaryRepresantation];        [UserDefaults setobject:userDict forKey:@"USER_DATA"];        [UserDefaults synchronize];    }}

但这并没有被称为.

解决方法 您无法为全局变量添加观察者,KVO仅适用于对象的属性.您可以将全局变量包装在应用程序委托中的getter / setter对中,但之后您也可以使用常规属性,因为只有使用setter的更改才会触发KVO通知.

此外,你不应该使用全局变量,即使你把它们伪装成’单身人士’也不行.

总结

以上是内存溢出为你收集整理的objective-c – 可以使用KVO来观察全局变量吗?全部内容,希望文章能够帮你解决objective-c – 可以使用KVO来观察全局变量吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1244221.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存