NSNotification を利用してオブジェクト間のイベント通知を行う | 静岡県富士市在住のiPhoneアプリ開発者ブログ

NSNotification を利用してオブジェクト間のイベント通知を行う

オブジェクトAで起こったイベントをオブジェクトBへ通知したい場合は、NSNotification を利用するとオブジェクト間を関連づけなくても通知できます。

ポイント
1.通知の管理は、NSNotificationCenter で管理される
 NSNotificationCenter は1プロセスで一意なインスタンス
 [NSNotificationCenter defaultCenter] でインスタンス取得
 
 NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];

2.postNotificationName で通知する
 [notificationCenter postNotificationName:@"hogeevent" object:nil userInfo:nil];

3.addObserver で通知受け取りを設定しておく
 [notificationCenter addObserver:self selector:@selector(Onhoge:) name:@"hogeevent" object:nil];

4.通知受け取り時の処理を定義しておく
 - (void) Onhoge:(NSNotification *)notification //必ずこの形式の関数を定義
 {
   // notification には、通知元からの情報を格納できる
// postNotificationName の userinfo に NSDictionary のインスタンスを指定すれば
   // 値を渡すことができる。下記は、hogehoge キーの整数値を取得
NSInteger i = [[[notification userInfo] objectForKey:@"hogehoge"] intValue];
 }