読者です 読者をやめる 読者になる 読者になる

Shut the fuck up and write some code

グダグダ言わずにコードを書きたいブログ

Objective-Cのイベント処理

iPhone Objective-C

Objective-Cでイベント処理をやろうと思ったら自前でコールバックを実装しなければいけないのか・・・と思いきやNotificationを発行して通知する方法があったことを知る。ActionAcriptのEventDispatcherみたいなものですね。

イベント登録は↓。addEventListenerみたいなところ。

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(onPress) name:@"PRESS" object:nil];

イベント発生通知処理。ASでいうdispatchEvent。

NSNotification *n = [NSNotification notificationWithName:@"PRESS" object:self];
[[NSNotificationCenter defaultCenter] postNotification:n];

これでイベント発生時にonPressメソッドが呼ばれる。

ちなみに

// 通知と値を受けるhogeメソッド
-(void)onPress:(NSNotificationCenter*)note{
  id * obj=[note object];
}

とすれば、NSNotification生成時に指定したobjectを参照出来る。


どこからでも呼べるので結構便利だ。