-1

有没有人有同样的经历。我有时会收到很多通知。看来我陷入了无限循环。

有什么方法可以过滤和仅收听我希望收听的我自己的设置值吗?

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];
                }
            }
     ];
4

2 回答 2

1

我发现当我的应用程序中的另一个 3rd 方组件在我不知道的情况下对 NSUserDefaults 进行更改时,就是这种情况。您可能需要仔细检查任何此类组件/库以查看是否发生这种情况

于 2013-09-13T04:57:34.397 回答
1

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

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
于 2013-05-09T12:46:12.153 回答