Iphone 通过重置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。如果计时器

我想用新的时间间隔重置两个NSTimer。 如果我知道他们在重新安置之前没有被释放,那就没问题了

我不能这样工作:

[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];
});
但是现在看起来有点脏,我知道