スキップしてメイン コンテンツに移動

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"が取得できる)

}

コメント

このブログの人気の投稿

日本に来た 今三週間

四月六日に日本に来た、今三週間になった。 嬉しくなかった、悲しくなかった。 日本の携帯電話のカメラはとてもいいよ、私は今撮影が好きだ、いつも寮に帰る途中で花とか魚とか写真を撮る。これも生活の趣味だ。 滴は綺麗だ 桜が凋んで落ちる 天気がいいとき、自転車に乗って、食材を買った。 自分で料理をつくる、おいしそうでしょう。 昨日清水寺に行った、天気はとても熱いね。日に焼けすぎたので、腕は今赤い。 側に花があるので、赤い清水寺はもっと美しそうだ。 木の色は艶やかだ。