«

»

4月
18

NSTimerのコールバックをblocksで実装する

NSTimerの生成では次のようにコールバック先となるメソッドをセレクタで指定します。

 
_timer = [NSTimer scheduledTimerWithTimeInterval:1 
target:self
selector:@selector(callback)
userInfo:nil
repeats:YES];
 
...
- (void)callback {
// do something
}

これを、次のようにblocksとNSBlockOperationを利用するとコールバック用のメソッドを作らずに実装できます。

_timer = [NSTimer scheduledTimerWithTimeInterval:1
target:[NSBlockOperation blockOperationWithBlock:^{ /* do something */ }]
selector:@selector(main)
userInfo:nil
repeats:YES];

なお、@selectorで指定しているmainは、blockOperationWithBlock:メソッドで取得したNSBlockOperationオブジェクトのmain。

/dev/rand: Objective-C blocks for fun http://orion98mc.blogspot.jp/2012/08/objective-c-blocks-for-fun.html

コメントを残す

メールアドレスは公開されません

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>