2013-02-02 3 views
6

簡単な質問:シングルトンObjective CのNSNotificationCenterオブザーバを削除する

私はいくつかのNSNotificationsに登録されているシングルトンクラスを持っています。シングルトンはアプリの生涯にわたって続くので、

私はシングルトンクラスでは

[NSNotificationCenter defaultCenter] removeObserver:self] 

を実装する必要がありますか?

iOSのシングルトンでNSNotificationセンターを扱う正しい方法は何ですか?

おかげ

+0

[AppDelegateの通知のためにオブザーバを追加すると、それを削除する必要がありますか?](http://stackoverflow.com/questions/9560419/if-add-an-observer-for- a-app-notice-the-app-re-do-bother-re) –

答えて

9

いいえ、あなたは、この場合には観察を停止する必要はありません。真のシングルトンによって使用されるメモリが割り当て解除される唯一の時間は、プログラムが終了するときです。プログラムが終了すると、先に進み、とにかく使用されているメモリとリソースのすべてを割り当て解除します。

+0

説明のおかげで – banditKing

+0

私は助けることができました! – lnafziger

0

あなたのシングルトンがアプリ全体に通知を聞きたい場合は、それを削除する必要はありません。

あなたは、ある時点で、あなたのシングルトンは、通知の受信を停止すべきことを望むなら、あなたは、あなたのシングルトンにメソッドを追加することができますし、ただ、Memoryため

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

を必要な場所にそれを呼び出すことができます、あなたは適切にそれを削除する必要があります-dealloc

+0

私が私の答えで指摘したように、シングルトンでは、プログラムはとにかく終了するとメモリが削除されます。シングルトンの全体のポイントは、プログラムが実行されている間はメモリに残ることです。 – lnafziger

+0

これは、非シングルトン使用のためにクラスがある程度変更された場合、開発者のメモリに役立ちます – rsc

関連する問題