Objective-CでCallback

イベントディスパッチャーを使ってイベント処理する方法について。 今までプロパティやセッターやらで処理してたけど、 イベント処理の方がセンスがよさそうなのでそっちでやる。

Callbackの受け取り側では以下を定義

//ViewDidLoadなりの中で初期化するときに呼んでやる
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(recvCallback:) name:@"MyEvent" object:nil]; 

//実際にコールバックを受け取る部分
- (void) recvCallback: (NSNotification*) note{
   NSLog(@"recvCallback");  
    NSLog(@"%@", [note object]);
    NSLog(@"recvCallback end");    
}

Callbackの送り側では以下を実行する

    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
    // イベントをポスト。argはイベントハンドラに渡す引数
    [center postNotificationName:@"MyEvent" object: @"hoge"];

サンプル

Written on March 22, 2011