cocoa - NSNotification 和多线程

标签 cocoa multithreading nsnotifications nstask

我正在尝试在我的多线程应用程序中获取通知 NSTaskDidTerminateNotification,但无法使其正常工作。当我在单线程应用程序上测试它时,它似乎确实有效。在 init 中,我有 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(taskDidEnd:) name: NSTaskDidTerminateNotification object: myTask]; 我很确定它被调用是因为其他对象(如 myTask)正在那里启动。 taskDidEnd: 方法定义为

- (void)taskDidEnd: (NSNotification *)aNotification
{
     NSLog(@"Task succeeded.");
}

在解除分配中,观察者被删除。

这一切都发生在一个在单独线程内启动的对象中,我希望在同一对象内接收该通知。

最佳答案

您是否在该线程上运行了运行循环?如果没有,NSTask 将不会注意到任务已结束(或者任务尚未结束),也不会发布通知。

关于cocoa - NSNotification 和多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578764/

相关文章:

iphone - 在 Objective-C 中动态加载类?

cocoa - 调试 Objective-C 垃圾收集崩溃的策略

iphone - 在iPhone SDK下导入SSL证书

c# - 是否允许在线程之间缓存/重用 Thread.GetNamedSlot?

java - java 集合的不可修改包装器是否使它们成为线程安全的?

java - 多个类之间的同步线程安全吗

ios - Swift 3 中的通知中心崩溃

objective-c - Objc scriptingbridge 如何在特定文件夹中打开新的 Finder 窗口

ios - 从控制台发布 NSNotification

ios - 如何使用从 Swift 到 Objective-C 的 Notification.Name 扩展?