通过重置NSTimer来EXC_BAD_ACCESS

时间:2011-01-13 18:05:55

标签: iphone objective-c cocoa-touch

我想用新的TimeInterval重置两个NSTimers。 如果我知道在重置它们之前它们是否未被释放,那将是没有问题的。

我不能这样工作:

[timer invalidate];

if(startTimers == YES)
   timer = [NSTimer scheduledTimerWithTimerInterval:...]

因为在我使计时器失效之前我不知道计时器是否无效。

如果我使释放的计时器无效(在失效时计时器被释放)我得到一个EXC_BAD_ACCESS。

2 个答案:

答案 0 :(得分:15)

释放计时器时,也将其变量设置为nil。如果计时器为零,则[timer invalidate]将默默无效。

[timer invalidate];
timer = nil;

答案 1 :(得分:1)

我已经使用了Brian解决方案,仍然可以获得cbMachineGUI.SelectedItem = cbMachineGUI.Items .OfType<Machine.Types>() .FirstOrDefault(item => item.ToString() == machineComboBox);

对我来说,EXC_BAD_ACCESS解决了这个问题:

dispatch_after

但现在看起来有点脏,我知道......