我正在研究需要逐秒更新的iOS应用程序(FW:5.0+ & ARC)。NSRunLoop在模拟器上正常工作,崩溃iDevice
目前,我有这样的方法中的(这被称为在performSelector时-viewDidLoad):
-(void)FireOnload {
counter = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(countDownTime) userInfo:nil repeats:YES];
[counter fire];
[[NSRunLoop mainRunLoop] addTimer:counter forMode: NSDefaultRunLoopMode]; // <-- Causing Problem
}
-(void)countDownTime
{
double timeNow = [[NSDate date] timeIntervalSince1970];
double timeLeft = timeEnding - timeNow;
if(timeLeft < 60) // Less then 60 seconds, do something.
{
//Do Stuff
}
}
的counter
变量称为在头部为的NSTimer。 我明确地调用[counter fire]
,因此只要加载视图就会调用它,而不是在1秒之后。
这在iOS模拟器中正常工作并会每秒触发,但是当它进入iDevice时,它会崩溃。
我已经注释掉了NSRunLoop
行,并且iDevice不会崩溃。但是,它不再每秒更新一次。
我在这里做错了什么?
感谢
崩溃时的堆栈跟踪是什么?另外,你提到你使用'performSelector'调用'FireOnload' - 你在调用主线程还是背景? – FluffulousChimp 2012-03-27 03:02:35
那么这不会解决实际问题,但如果您要立即将计时器放在runloop上,还可以使用scheduledTimerWithTimeInterval:并且不要手动将它放在runloop上。 – 2012-03-27 05:23:47