如何正确停止NSRunLoop?

问题描述:

我在我的应用程序中使用NSRunLoop。只需一条语句如何正确停止NSRunLoop?

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]]; 

在for循环中执行。需要每两秒更新一次文本三次。一切工作正常,但是当我退出它运行的屏幕(并且它正在运行时,这是最重要的),然后再次进入屏幕,然后再次退出我的应用程序崩溃。我想我必须停止运行NSRunLoop,如果我退出时它运行,但我不知道如何做到这一点。你能给我一些建议吗?

这是我的循环:

for (int i = 1;i <= 3;i++) 
{ 
    int result = [self analyzeCards]; 

    ((UILabel *)[bidLabels objectAtIndex:i]).text = [bidResults objectAtIndex:result]; 


    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]]; 

    bidIndexes [i - 1] = result; 
} 
+1

你应该会显示更多的代码,Andrey。例如,你创建一个新的运行循环吗?你能否展示(以及涉及更新的元素?UILabel或?)。 –

感谢您的修改问题,包括位的源代码。

我建议不要做runUntilDate事情你一直在做,并做为一个分离线程代替(making sure to actually do the updating the labels -- the user interface -- on the main thread)。

崩溃本身很可能发生,因为bidLabels数组中的对象是陈旧或释放的,或者只是简单的垃圾。每次重新打开窗口时重置该阵列。

+0

非常感谢Michael –