我有一个工作线程,我通过一个由标志控制的循环保持活着。我需要线程在应用程序的长度内保持活动状态,因为它打开了与远程服务器的永久连接。
我启动该线程并使用以下方法调用其中的几个方法:
[worker performSelector:@selector(getBusy) onThread:worker withObject:nil waitUntilDone:NO];
这似乎工作正常,并调用该方法。在getBusy
中的某个时刻,我尝试在主线程中调用一个方法:
[delegate performSelectorOnMainThread:@selector(gotBusy) withObject:nil waitUntilDone:NO
其中delegate是对启动单独线程的类的引用。
问题是gotBusy
永远不会在主线程上被调用。我用NSLog()语句填充它,我看不到它们在控制台上打印。
我应该寻找什么来调试它?
答案 0 :(得分:2)
首先,确保delegate
不是零。其次,确保您的主事件循环未被阻止且未以模态模式运行。
答案 1 :(得分:0)
您是否有可能从未分配过delegate
,因此您在零对象上调用performSelectorOnMainThread
?您可以尝试将waitUntilDone
设置为YES
,这样您的工作线程就会阻止并让代理人完成其工作。