我在我的应用程序中使用NSUserDefaults,我希望在更改特定值时收到通知.为此,我在viewDidLoad中添加了以下行:
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
[settings synchronize];
[settings addObserver:self forKeyPath:@"pref_server" options:NSKeyValueObservingOptionNew context:NULL];
Run Code Online (Sandbox Code Playgroud)
以及要通知的方法:
- (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");
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,后者永远不会被调用... @"pref_server"是我在Root.plist中设置的项目标识符,在Settings.bundle中.我究竟做错了什么?
ios ×1