HOME > NSNotificationCenter

NSNotificationCenter

NSNotificationCenterクラスを使用すると、通知という仕組みを使用することができます。
たとえば、あるイベントが発生した時に、同じアプリ内の別クラスでそのイベントを拾いたいといった時に使用できます。

NSNotificationCenter概要1


NSNotificationCenter概要2


NSNotificationCenter概要3

NSNotificationCenterのクラス階層

NSObject

NSNotificationCenter

生成


// デフォルトの通知センターを取得する
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

NSNotificationCenterのメソッド

【NSNotificationCenterの主要メソッド】
メソッド 説明
-(void)addObserver:
(id)notificationObserver
selector:(SEL)notificationSelector
name:(NSString *)notificationName
object:(id)notificationSender
通知要求の登録を行う
(例)下記NSNotificationCenter例文参照
-(void)removeObserver:
(id)notificationObserver
登録済みの通知要求を削除する
-(void)postNotification:
(NSNotification *)notification
通知を行う
(例)[nc postNotification:n];
※nはNSNotificationクラスのインスタンス

主要なメソッドのみ掲載しています。
 上記「NSNotificationCenterのクラス階層」にあるクラスのメソッドも使用できます。

NSNotificationCenter例文

【通知の受け取りのみの例文】


【通知の送信側 - 通知の作成〜通知の実行】

// 通知を作成する
NSNotification *n = [NSNotification notificationWithName:@"Tuchi" object:self];

// 通知実行!
[[NSNotificationCenter defaultCenter] postNotification:n];


【通知の受取側 - 受取の登録】

// デフォルトの通知センターを取得する
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

// 通知センターに通知要求を登録する
// この例だと、通知センターに"Tuchi"という名前の通知がされた時に、
// hogeメソッドを呼び出すという通知要求の登録を行っている。
[nc addObserver:self selector:@selector(hoge) name:@"Tuchi" object:nil];


【通知の受取側 - 通知を受けた際に呼ばれるメソッド】

// 通知を受けるhogeメソッド
-(void)hoge{
    // ここに何かの処理を記述する
}



【通知と値を受け取る例文】


【通知の送信側 - 通知の作成〜通知の実行】

// 通知の受取側に送る値を作成する
NSDictionary *dic = [NSDictionary dictionaryWithObject:@"HOGE" forKey:@"KEY"];

// 通知を作成する
NSNotification *n =
    [NSNotification notificationWithName:@"Tuchi" object:self userInfo:dic];

// 通知実行!
[[NSNotificationCenter defaultCenter] postNotification:n];


【通知の受取側 - 受取の登録】

// デフォルトの通知センターを取得する
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

// 通知センターに通知要求を登録する
// この例だと、通知センターに"Tuchi"という名前の通知がされた時に、
// hogeメソッドを呼び出すという通知要求の登録を行っている。
[nc addObserver:self selector:@selector(hoge:) name:@"Tuchi" object:nil];


【通知の受取側 - 通知を受けた際に呼ばれるメソッド】

// 通知と値を受けるhogeメソッド
-(void)hoge:(NSNotificationCenter*)center{
    // 通知の送信側から送られた値を取得する
    NSString *value = [[center userInfo] objectForKey:@"KEY"];
    (この例だと"HOGE"が取得できる)

}