ios – NSUserDefaults和KVO问题

ios – NSUserDefaults和KVO问题,第1张

概述我在我的应用程序中使用NSUserDefaults,我希望在更改特定值时收到通知.为此,我在viewDidLoad中添加了以下行: NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];[settings synchronize];[settings addObserver:self forKeyPath:@"pref 我在我的应用程序中使用NSUserDefaults,我希望在更改特定值时收到通知.为此,我在vIEwDIDLoad中添加了以下行:
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];[settings synchronize];[settings addobserver:self forKeyPath:@"pref_server" options:NSkeyvalueObservingOptionNew context:NulL];

以及要通知的方法:

- (voID)observeValueForKeyPath:(Nsstring *)keyPath ofObject:(ID)object change:(NSDictionary *)change context:(voID *)context{    NSLog(@"Change");    NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];    if (object == settings && [keyPath isEqualToString:@"pref_server"])    {        NSLog(@"Server dID change");    }}

不幸的是,后者永远不会被调用… @“pref_server”是我在Root.pList中设置的项目标识符,在Settings.bundle中.我究竟做错了什么?

解决方法 我建议使用适当的通知: NSUserDefaultsDidChangeNotification.

在XCode中的Apple文档中搜索AppPrefs,它将显示一个示例应用程序,它完全符合您的要求.只需编译并运行!它利用了NSUserDefaultsDidChangeNotification.

这是用于注册观察者的代码:

[[NSNotificationCenter defaultCenter] addobserver:self                                         selector:@selector(defaultsChanged:)                                             name:NSUserDefaultsDIDChangeNotification                                           object:nil];
总结

以上是内存溢出为你收集整理的ios – NSUserDefaults和KVO问题全部内容,希望文章能够帮你解决ios – NSUserDefaults和KVO问题所遇到的程序开发问题。

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

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

原文地址:https://54852.com/web/1102590.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存