NSNotificationCenter
NSNotificationCenterクラスを使用すると、通知という仕組みを使用することができます。
たとえば、あるイベントが発生した時に、同じアプリ内の別クラスでそのイベントを拾いたいといった時に使用できます。
NSNotificationCenterのクラス階層
NSObject
↑
NSNotificationCenter
生成
// デフォルトの通知センターを取得する
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
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"が取得できる)
}