3
私は定期的に実行されるタスクを持っていますが、もともとNSThreadとNSTimerを使用しているメインrunloopとは別の実行ループで実行するように設計されています。ノンメインランループタスクをGCDに変換
これをGCDを利用するために最適化する方法は何ですか?
現在のコード:
-(void)initiateSomeTask
{
[NSThread detachNewThreadSelector:@selector(startTimerTask)
toTarget:self withObject:nil];
}
-(void)startTimerTask
{
// We won't get back the main runloop since we're on a new thread
NSRunLoop *myRunLoop = [NSRunLoop currentRunLoop];
NSPort *myPort = [NSMachPort port];
[myRunLoop addPort:myPort forMode:NSDefaultRunLoopMode];
NSTimer *myTimer = [NSTimer timerWithTimeInterval:10 /* seconds */
target:self selector:@selector(doMyTaskMethod)
userInfo:nil repeats:YES];
[myRunLoop addTimer:myTimer forMode:NSRunLoopCommonModes];
[myRunLoop run];
}
は私がdispatch_async
でdetachNewThreadSelector
を交換する以外に何かできることはありますか?