NSRunLoop正在接收一个奇怪的选择器;可能的竞争条件tomfoolery?

时间:2010-08-26 15:35:27

标签: iphone objective-c nsthread

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

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

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

  

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

如果我在线程工作阶段结束时按下停止按钮,似乎就会发生这种情况。在此期间,除了:

之外没什么用
  • 发布一些OpenGL内存
  • 在主线程上调用最终方法
  • 排空其自动释放池
  • 并返回

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

1 个答案:

答案 0 :(得分:1)

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