たとえば、メモリが少なくなると、システムはUIApplicationDidReceiveMemoryWarningNotification
通知を送信します。その時点で Apple がドキュメントで述べているのはそれだけです。しかし、この通知はどこから来て、どのメソッドに送信されるのでしょうか? または、通知された内容をどこでどのように登録しますか?
4 に答える
通知を受け取りたいクラスの初期化コード内から、次のメソッド呼び出しを行います。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleMemoryWarning:) name: UIApplicationDidReceiveMemoryWarningNotification object:nil];
これは、クラスが次のようにhandleMemoryWarningメソッドも実装していることを前提としています。
- (void) handleMemoryWarning:(NSNotification *)notification
{
}
アプリケーションデリゲートを使用してオプションのメソッドを実装する方がはるかに簡単です
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
最も一般的な通知は、デリゲートへの呼び出し、通常は正式なプロトコルのオプションのメソッドへの呼び出しに変換して利用することもできます。デリゲートは、好きなオブジェクトにすることができます。
すべての通知が集中管理される通知センターに送信されます。この通知について通知を受けたいオブジェクトは、どの通知を受け取りたいか、通知が発生したときにどのメソッドを呼び出す必要があるかを通知することで、通知センターに登録します。
詳細については、CocoaおよびNSNotification クラス リファレンスの Notification プログラミング トピックを参照してください。
セレクターは通知を引数として受け取る必要があることに注意してください。
@selector(handleMemoryWarning)や-(void)handleMemoryWarning {}のようなものを使用すると、オブジェクトは通知を送信せず、すべてのメモリを保持し続けます。
私はこれに噛まれました。