NSNotification и многопоточность - PullRequest
2 голосов
/ 05 апреля 2010

Я пытаюсь получить уведомление NSTaskDidTerminateNotification в своем многопоточном приложении, но не могу заставить его работать. Кажется, он работает, когда я тестировал его в однопоточном приложении. В init у меня есть [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(taskDidEnd:) name: NSTaskDidTerminateNotification object: myTask];, и я совершенно уверен, что он вызывается, потому что другие объекты (например, myTask) инициируются там. И метод taskDidEnd: определяется как

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

А в деиллоке наблюдатель удаляется.

Все это происходит в объекте, который инициируется в отдельном потоке, и я хотел бы получить это уведомление внутри того же объекта.

1 Ответ

1 голос
/ 05 апреля 2010

Вы запускали цикл выполнения в этом потоке? В противном случае NSTask не заметит, что задача завершилась (или задача еще не закончилась), и не опубликует уведомление.

...