我试图在我的多线程应用程序中获取通知NSTaskDidTerminateNotification
,但我无法正常工作。当我在一个单线程应用程序上测试它时,它似乎工作正常。在init
我有[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(taskDidEnd:) name: NSTaskDidTerminateNotification object: myTask];
,我很确定它被调用,因为其他对象(如myTask)正在启动。并且taskDidEnd:
方法被定义为NSNotification和多线程
- (void)taskDidEnd: (NSNotification *)aNotification
{
NSLog(@"Task succeeded.");
}
而在dealloc中,观察者被删除。
这一切都发生在一个单独的线程内部启动的对象中,我希望在同一个对象中接收该通知。
顺便提一下,是否有一个原因,你在线程上这样做?任务(进程)已经倾向于在其他处理器上进行调度,并且运行循环自然处理罕见的离散事件,如NSTasks完成。 – 2010-04-05 23:46:09
经过很长时间的搜索后,我发现NSTask并不是没有响应,而是其他的东西。这允许我摆脱线程。谢谢你问我为什么需要一个,否则我不会发现问题。 – 2010-04-06 08:10:17