
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问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)