43

オブザーバーを追加すると、オブジェクトの保持数が増えますか?はいの場合、ARCはこのオブザーバーの削除も処理しますか?そうでない場合、どこでオブザーバーを削除する必要がありますか?

4

1 に答える 1

80

を使用する場合でも、オブザーバーを明示的に削除する必要がありますARC。メソッドを作成し、deallocそこから削除します。

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

ここで呼び出す必要のないメソッドが表示された場合は、[super dealloc];スーパーdeallocのないメソッドのみが必要です。

スイフトのアップデート

swiftでコードを記述している場合は、 deinitメソッドでオブザーバーを削除できます。

deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
       }
于 2013-03-27T10:17:20.317 に答える