为什么我得到这么多NSUserDefaultsDidChangeNotification

时间:2013-05-08 11:01:27

标签: iphone objective-c nsuserdefaults nsnotificationcenter

有没有人经历过同样的事情。我有时会收到很多通知。好像我陷入了无限循环。

有没有办法过滤和收听我自己的设置值,我想听?

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
    NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
    [center addObserverForName:NSUserDefaultsDidChangeNotification object:nil
        queue:mainQueue
        usingBlock:^(NSNotification *note) {
            SettingsManager * s = [SettingsManager sharedSettings];
                DLog(@"\n%@ Setting logging: %@", note, s.loggingEnabled ? @"YES" : @"NO");
                if (s.loggingEnabled) {
                    [BPAnalytic startLogging];
                } else {
                    [BPAnalytic stopLogging];
                }
            }
     ];

2 个答案:

答案 0 :(得分:1)

你没有删除观察者。这就是为什么。尝试删除dealloc上的观察者

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

答案 1 :(得分:1)

我发现当我的应用中的另一个第三方组件在我不知情的情况下向NSUserDefaults写入更改时就是这种情况。您可能需要仔细检查任何此类组件/库以查看是否发生了这种情况

相关问题