我在使用NSTimer时遇到问题,代码如下,我简化了代码:
- (void) mainThreadFun
{
[NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(test) userInfo:nil repeats:YES];
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(test1) userInfo:nil repeats:YES];
});
}
我发现mainThread中的NSTimer工作但是另一个线程中的NSTimer不起作用。为什么会发生这种情况?我该如何解决这个问题?
答案 0 :(得分:5)
您无法在GCD队列中使用NSTimer。 NSTimer需要NSRunLoop才能运行,GCD队列没有NSRunLoop。
如果您想要使用GCD队列的计时器功能,您应该使用dispatch_after()
作为一次性计时器,或使用dispatch_source作为重复计时器。