通知センターに独自の通知を送信する : 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 プロパティを使用して、参照することができるようになっています。

[ もどる ]