-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

オブザーバーを削除していません。それが理由です。解放時にオブザーバーを削除してみてください

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

これは、アプリ内の別のサードパーティ コンポーネントが知らないうちに NSUserDefaults に変更を書き込んでいた場合に当てはまります。そのようなコンポーネント/ライブラリを精査して、これが発生しているかどうかを確認することをお勧めします

于 2013-09-13T04:57:34.397 に答える