0

我有一个工作线程,我通过一个由标志控制的循环保持活动状态。我需要线程在我的应用程序的长度内保持活动状态,因为它打开了与远程服务器的永久连接。

我启动了那个线程并调用了几个方法:

[worker performSelector:@selector(getBusy) onThread:worker withObject:nil waitUntilDone:NO];

这似乎工作正常,并且调用了该方法。在某些时候,getBusy我尝试在主线程中调用一个方法:

[delegate performSelectorOnMainThread:@selector(gotBusy) withObject:nil waitUntilDone:NO

其中委托是对启动单独线程的类的引用。

问题是gotBusy永远不会在主线程上被调用。我已经用 NSLog() 语句添加了它,但我看不到它们打印在控制台上。

我应该寻找什么来调试这个?

4

2 回答 2

2

首先,确保delegate不为零。其次,确保你的主事件循环没有被阻塞并且没有在模式模式下运行。

于 2013-04-15T15:06:23.990 回答
0

有没有可能你从来没有分配过delegate,所以你在调用performSelectorOnMainThread一个 nil 对象?您可以尝试设置waitUntilDone为,YES以便您的工作线程将阻塞并让委托完成其工作。

于 2013-04-15T15:07:28.027 回答