NSNotification und Multithreading
-
24-09-2019 - |
Frage
Ich versuche, die Benachrichtigung NSTaskDidTerminateNotification
in meiner multithreaded App zu bekommen, aber ich kann sie nicht arbeiten. Es ist zu funktionieren scheint, wenn ich es auf einem Single-Threaded-App getestet. In init
habe ich [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(taskDidEnd:) name: NSTaskDidTerminateNotification object: myTask];
und ich bin ziemlich sicher, dass es, weil andere Objekte aufgerufen wird (wie myTask) dort eingeleitet werden. Und die taskDidEnd:
Methode ist definiert als
- (void)taskDidEnd: (NSNotification *)aNotification
{
NSLog(@"Task succeeded.");
}
Und in dealloc die Beobachter entfernt werden.
Das alles in einem Objekt geschieht, die in einem separaten Thread gestartet wird, und ich möchte, dass die Benachrichtigung innerhalb des gleichen Objekts erhalten.
Lösung
Haben Sie laufen die Laufschleife auf diesem Thread? Wenn nicht, wird NSTask nicht zur Kenntnis, dass die Aufgabe beendet ist (oder wird die Aufgabe noch nicht beendet) und die Benachrichtigung nicht veröffentlichen.