通知センターに独自の通知を送信する : Objective-C プログラミング
PROGRAM
通知センターに独自の通知を送信する
Objective-C では、NSNotificationCenter(通知センター)を介して、任意のオブジェクト同士で交流することができます。
この NSNotificationCenter では、予め用意された通知が来るのを待つためだけではなく、任意の通知を送信することもできるようになっています。
通知自体はとても簡単で、任意の名前を付けた NSNotification クラスのインスタンスを、NSNotificationCenter へ "postNotification:" メソッドを使って送信します。
このとき、NSDictionary 型のインスタンスで任意の付加情報を付けることもできます。
// 付加情報が必要であれば作成します。
NSDictionary* userInfo = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];
// 通知を作成します。
NSNotification* note = [NSNotification notificationWithName:@"EzNetCustomNotification" object:self userInfo:userInfo];
// 通知を通知センターに送信します。
[[NSNotificationCenter defaultCenter] postNotification:note];
上記で指定した "EzNetCustomNotification" という文字列が、この通知の名前になります。
ここでは文字列で直接指定しましたが、他のたとえば "UITextFieldTextDidBeginEditingNotification" などの既存の通知と同じように、文字列定数として用意しておく方が、プログラムしやすいように思います。
ともあれ、このようにすることで、この名前の通知を受け取ろうとしているオブジェクトがあれば、この通知があったことが NSNotificationCenter が知らせてくれます。
このとき、object 引数や userInfo で指定したオブジェクトを、受け取り手が NSNotification の object プロパティや userInfo プロパティを使用して、参照することができるようになっています。
[ もどる ]