5

私はそうのように私のビューコントローラのinit方法で通知オブザーバを設定します。通知オブザーバーはどこで削除すればよいですか?

[[NSNotificationCenter defaultCenter] 
        addObserver:self 
        selector:@selector(saveState) 
        name:UIApplicationWillResignActiveNotification 
        object:nil]; 

この通知のためremoveObserver:name:object:を呼び出すのに最適な場所です。私は現在、私のdeallocメソッドで呼びますが、それが問題を引き起こす可能性があるかどうかを知りたがっています。

答えて

8

いいえ、正しいと思います。 deallocは、通知オブザーバを削除する正しい場所です(以前にオブザーバを削除する必要がある特別な理由がない限り)。

+0

ありがとう、ありがとうございます。 –

+0

公式文書への参照を掲載してください。 – rraallvv

1

viewWillDisappear:のオブザーバはいつでも削除することができます。また、使用し終わった時点で他の必要がない場合は、関数に配置することができます。

+0

ビューが再び表示されない限り。あなたが 'viewWillAppear:'で通知オブザーバを起動した場合、あなたのアプローチがうまくいくと思います。 –

1

-saveStateが場合にのみアクティブに一度実行する必要がある場合は、することができますremoveObserver -saveState内部。

+0

おそらく、彼は再び、アプリケーションがアクティブになり、再びアクティブになると再び保存したいと思うでしょう。 –

+0

あなたは正しいです。私は、彼が再びアクティブになるときにオブザーバーとして登録すると確信しています。 – AechoLiu

+0

私は単に 'saveState'を例として使っていましたが、' dealloc'を使うのが好きなので、おそらく何度も何度も呼び出す必要があります。 –

関連する問題