我想用新的TimeInterval重置两个NSTimers。 如果我知道在重置它们之前它们是否未被释放,那将是没有问题的。
我不能这样工作:
[timer invalidate];
if(startTimers == YES)
timer = [NSTimer scheduledTimerWithTimerInterval:...]
因为在我使计时器失效之前我不知道计时器是否无效。
如果我使释放的计时器无效(在失效时计时器被释放)我得到一个EXC_BAD_ACCESS。
答案 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
但现在看起来有点脏,我知道......