【发布时间】:2010-04-05 14:06:51
【问题描述】:
我正在尝试在我的多线程应用程序中获取通知 NSTaskDidTerminateNotification,但无法正常工作。当我在单线程应用程序上测试它时,它似乎确实有效。在init 我有[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(taskDidEnd:) name: NSTaskDidTerminateNotification object: myTask];,我很确定它会被调用,因为其他对象(如myTask)正在那里启动。而taskDidEnd: 方法定义为
- (void)taskDidEnd: (NSNotification *)aNotification
{
NSLog(@"Task succeeded.");
}
在 dealloc 中,观察者被移除。
这一切都发生在一个在单独线程中启动的对象中,我希望在同一个对象中接收该通知。
【问题讨论】:
-
顺便说一句,你在一个线程上这样做是有原因的吗?任务(进程)已经倾向于在其他处理器上调度,并且运行循环自然会处理不常见的离散事件,例如 NSTasks 完成。
-
搜索了很长时间后,我发现不是 NSTask 没有响应,而是其他问题。这让我摆脱了线程。谢谢你问我为什么需要一个,否则我不会发现问题。
标签: cocoa multithreading nsnotifications nstask