我正在创建一个游戏,在游戏中我需要一个计时器。
我工作得很好,但是当我滚动地图时它会停止,然后当我完成滚动时它会重新开始。我用 dispatch_async 解决了这个问题。这是代码
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeNext) userInfo:nil repeats:NO];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
[[NSRunLoop currentRunLoop] run];
});
定时器:
__block NSTimer *timer;
但是如果应用程序进入后台,我需要停止这个时间(当它激活时它会再次启动)。
通过这种方式,我可以滚动地图并且计时器运行良好,我尝试:
- (void)timeNext {
[timer invalidate];
}
并没有工作。有谁知道如何阻止它?或任何其他想法来完成这项任务?