NSOperationを試してみた

非同期に処理を行わせたい場合は別スレッドを立てて裏で実行したりするのが定番だけど、MacOSXiPhoneアプリではNSOperationを使って自然な感じに非同期処理を行わせることができる(らしい)。

以下自分用メモ。mainの中でdoItLaterを非同期に呼び出してる。

...
- (void)doItLater {
	NSLog(@"(ブブブー)");
}

- (void)main {
	NSOperationQueue *q = [[NSOperationQueue alloc] init];
	[q addOperation:[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(doItLater) object:nil]];
	NSLog(@"ブブブー");
}
...

上記コードを実行すると以下のように出力される。先に呼び出したはずの(ブブブー)の方が後に出力されてるね。なるほど非同期じゃねーの。

ブブブー
(ブブブー)