멀티 스레드 응용 프로그램에서 NSTaskDidTerminateNotification
알림을 받으려고하는데 작동하지 않습니다. 그것은 하나의 스레드 응용 프로그램에서 테스트했을 때 작동하는 것 같습니다. init
에서 나는 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(taskDidEnd:) name: NSTaskDidTerminateNotification object: myTask];
을 가지고 있으며 다른 객체 (예 : myTask)가 거기에서 시작 되었기 때문에 호출된다는 것은 확실합니다. 그리고 taskDidEnd:
방법은NSNotification 및 Multithreading
- (void)taskDidEnd: (NSNotification *)aNotification
{
NSLog(@"Task succeeded.");
}
으로 정의되며 관찰자는 제거됩니다.
이 모든 것은 별도의 스레드에서 시작된 개체에서 발생하며 같은 개체 내에 알림을 받고 싶습니다.
덧붙여 말하자면, 스레드에서이 작업을 수행하는 이유가 무엇입니까? 작업 (프로세스)은 이미 다른 프로세서에서 예약되는 경향이 있으며 실행 루프는 자연스럽게 NSTasks 완료와 같이 자주 발생하지 않는 이벤트를 처리합니다. –
오랜 시간을 검색 한 후 NSTask가 응답하지 않고 다른 것임을 알았습니다. 이렇게하면 스레드를 제거 할 수 있습니다. 왜 내가 필요한지 물어 줘서 고마워. 그렇지 않으면 문제를 발견하지 못했을거야. –