Iphone 通过重置NSTimer执行错误访问
我想用新的时间间隔重置两个NSTimer。 如果我知道他们在重新安置之前没有被释放,那就没问题了 我不能这样工作:Iphone 通过重置NSTimer执行错误访问,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我想用新的时间间隔重置两个NSTimer。 如果我知道他们在重新安置之前没有被释放,那就没问题了 我不能这样工作: [timer invalidate]; if(startTimers == YES) timer = [NSTimer scheduledTimerWithTimerInterval:...] 因为我不知道计时器在我失效之前是否失效了 如果我使一个已释放的计时器失效(在失效时计时器被释放),我将获得一个EXC_BAD_访问。释放计时器时,也将其变量设置为nil。如果计时器
[timer invalidate];
if(startTimers == YES)
timer = [NSTimer scheduledTimerWithTimerInterval:...]
因为我不知道计时器在我失效之前是否失效了
如果我使一个已释放的计时器失效(在失效时计时器被释放),我将获得一个EXC_BAD_访问。释放计时器时,也将其变量设置为nil。如果计时器为零,则
[timer invalidate]
将不执行任何操作
[timer invalidate];
timer = nil;
我已经使用了s解决方案,但仍然得到EXC\u BAD\u访问
对我来说,之后的调度\u解决了问题:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void){
if ([_timer isValid]) [_timer invalidate];
_timer = nil;
[self timer];
});
但是现在看起来有点脏,我知道