0

ARC 対応プロジェクトがあります

viewDidLoadに追加されたオブザーバーはほとんどありません

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getSipNotification:) name:@"getSipNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(syncExtensionData:) name:@"syncExtensionData" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showLocalNotification:) name:@"showLocalNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(outgoingCall:)  name:@"outgoingCall" object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playRingtone)  name:@"playRingtone" object:nil];

すべてのオブザーバーを削除したいので、viewDidUnloadに次の行を追加しました

[[NSNotificationCenter defaultCenter] removeObserver:self];

今私の質問は、これはすべてのオブザーバーを削除することですか?

そうでない場合、どうすればできますか?

アップデート

単一のオブザーバーを削除したい場合、どうすればよいですか?

助けてください。

4

4 に答える 4

2

はい、すべてのオブザーバーを削除します。

 [[NSNotificationCenter defaultCenter] removeObserver:self];

そして、このように特定のオブザーバーを削除できます...

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"syncExtensionData" object:nil];
于 2013-10-03T09:30:57.303 に答える
0

viewDidUnload は iOS6 以降では非推奨になっているため、iOS6 以降ではオブザーバーが通知センターから削除されることはありません。単一のオブザーバーを削除するには

- (void)removeObserver:(id)notificationObserver 名:(NSString *)notificationName オブジェクト:(id)notificationSender
于 2013-10-03T09:51:48.927 に答える