После большого поиска я не смог найти погоду, которой необходимо передать объект словаря:
[NSUserDefaultsDidChangeNotification addObserver: forKeyPath: options: context:];
и что должно быть обеспечено в опциях, если я хочу быть уведомленным даже для единственного изменения в userDefaults. Также, что такое keypath?
Заранее спасибо.
NSUserDefaultsDidChangeNotification
- это просто уведомление, которое отправляется при изменении значений по умолчанию. Чтобы прослушать его, вам понадобится этот код:
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
selector:@selector(defaultsChanged:)
name:NSUserDefaultsDidChangeNotification
object:nil];
Это вызовет метод defaultsChanged: при срабатывании уведомления. Вам нужно реализовать этот метод следующим образом:
- (void)defaultsChanged:(NSNotification *)notification {
// Get the user defaults
NSUserDefaults *defaults = (NSUserDefaults *)[notification object];
// Do something with it
NSLog(@"%@", [defaults objectForKey:@"nameOfThingIAmInterestedIn"]);
}