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];
}
ポイント
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];
}