EXC_BAD_ACCESS通过重置NSTimer
问题描述:
我想用新的TimeInterval重置两个NSTimers。 如果我知道他们在重置它们之前是否被释放,这将是没有问题的。EXC_BAD_ACCESS通过重置NSTimer
我不能这样工作:
[timer invalidate];
if(startTimers == YES)
timer = [NSTimer scheduledTimerWithTimerInterval:...]
,因为我不知道我之前是无效的计时器无效。
如果我使释放的定时器无效(在失效时定时器被释放),我得到一个EXC_BAD_ACCESS。
答
当您释放计时器时,还将其变量设置为零。如果timer为零,那么[timer invalidate]
将默默无闻。
[timer invalidate];
timer = nil;
答
我已经使用Brian液和仍然得到EXC_BAD_ACCESS
。
对我来说,dispatch_after
解决了这个问题:
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];
});
但它看起来有点脏了,我知道...
由于它工作正常,你救了我的一天:-) – mabstrei 2011-01-13 19:24:32