3
주기적으로 실행되는 태스크가 있는데 원래 NSThread 및 NSTimer를 사용하여 메인 runloop과는 별도의 실행 루프에서 실행되도록 설계되었습니다.비 메인 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
를 대체 할 수 있나요?