我試圖在我的多線程應用程序中獲取通知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