Почему NSUserDefaultsDidChangeNotification получен дважды? - PullRequest
1 голос
/ 19 августа 2011

У меня есть этот код в моем AppDelegate

 - (void)applicationDidBecomeActive:(UIApplication *)application {
     NSLog(@"+applicationDidBecomeActive");
     NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
     [center addObserver:self selector:@selector(defaultsChanged:)  name:NSUserDefaultsDidChangeNotification object:nil];
     NSLog(@"-applicationDidBecomeActive");
 }

 - (void)defaultsChanged:(NSNotification *)notification {
     NSLog(@"+defaultsChanged");
     // Get the user defaults
     // NSUserDefaults *defaults = (NSUserDefaults *)[notification object];
     NSLog(@"-defaultsChanged");
 }

applicationDidBecomeActive запускается только один раз при запуске приложения.

Если значения по умолчанию не изменены, defaultsChanged неfired.

Но, если значения по умолчанию изменены, defaultsChanged срабатывает дважды, один за другим.

Я не могу понять, почему.Может кто-нибудь мне помочь?Спасибо.

Ответы [ 3 ]

3 голосов
/ 19 августа 2011

Вы совершенно уверены, что вы изменили только одну вещь по умолчанию?Если вы измените несколько значений по умолчанию, NSUserDefaultsDidChangeNotification будет отправлено несколько раз.Я использую аналогичный метод в некоторых своих приложениях, и я никогда не сталкивался с этой ошибкой.Это заставляет меня думать, что несколько значений по умолчанию должны были быть изменены.

2 голосов
/ 02 октября 2012

Вы добавляете наблюдателя каждый раз, когда приложение становится активным.После второго включения приложения, я думаю, вы дважды зарегистрируете наблюдателя и получите два уведомления.Разве регистрация не должна идти в одном из вариантов didFinishLaunching?

0 голосов
/ 01 февраля 2012

Я вижу, вы отметили вопрос как ответ, но я заметил, что у вас есть два оператора NSLog в методе defaultsChanged: Возможно, метод не вызывается дважды, но вы регистрируете вызов дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...