画面表示の変更などはperformSelectorOnMainThreadをつかって行う事。
@interface MovingOperation : NSOperation @end
@implementation MovingOperation - (void)main { for (int i=0;i<100;i++) { NSLog(@"count %d",i); } } @end
使う側は
NSOperationQueue *queue
を作っておいて
MovingOperation *op = [[[MovingOperation alloc]init]retain]; [queue addOperation:op]; [op release];
とするだけでよい。
detachNewThreadSelector で実行すれば良い。排他処理は自前でする必要有り。
キューを作る
dispatch_queue_tを作成 dispatch_queue_create(name, nil); dispatch_queue_tを解放 dispatch_release(queue);
nameは[@"hoge" UTF8String];で指定。
非同期処理 dispatch_async(queue, ^{});
でキューに実行したいblocksを入れる。
mainキューを取得する。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0) , ^{ });
[NSThread sleepForTimeInterval:30.0];
で30秒眠る