0

我有一些线程在做繁重的工作,而我的主线程处理 UI 的东西。线程有时会回调到主线程以更新进度条。

总而言之,它不是那么稳定。我已经解决了与逻辑有关的问题,但特别是一个问题仍然存在。我有一些类似于停止按钮的代码,这意味着线程在下次检查发生的情况时不会尝试更新自身。

有时,当我按下停止按钮时,我会收到此错误:

-[NSRunLoop isEnabled]:无法识别的选择器发送到实例...

如果我在线程工作阶段结束时按下停止按钮,似乎会发生这种情况。在此期间,它并没有做太多事情,除了:

  • 释放一些 OpenGL 内存
  • 在主线程上调用 final 方法
  • 耗尽其自动释放池
  • 并返回

但坦率地说,错误信息太神秘了,我什至不知道从哪里开始。任何人都可以对 NSRunLoop 有所了解,这个“isEnabled”方法可能是什么,或者对可能出现的问题进行一般性的刺探?

4

1 回答 1

1

尝试在启用 Zombies 的情况下运行。如果线程中的一个 runloop 对象被另一个对象破坏并覆盖,我不会感到惊讶,但是您仍然有一个指向它曾经所在位置的过时指针。

于 2010-08-26T15:45:44.347 回答