NSNotification e multithreading
-
24-09-2019 - |
Domanda
Sto cercando di ottenere il NSTaskDidTerminateNotification
di notifica nella mia app multithreading ma non riesco a farlo funzionare. Sembra di lavoro quando ho testato su una singola applicazione filettato. In init
ho [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(taskDidEnd:) name: NSTaskDidTerminateNotification object: myTask];
e sono abbastanza sicuro che venga chiamato perché gli altri oggetti (come MyTask) sono iniziati lì. E il metodo taskDidEnd:
è definito come
- (void)taskDidEnd: (NSNotification *)aNotification
{
NSLog(@"Task succeeded.");
}
E nel dealloc l'osservatore viene rimosso.
Il tutto avviene in un oggetto che viene messo all'interno di un thread separato e desidero ricevere la notifica che all'interno dello stesso oggetto.
Soluzione
Hai eseguito il ciclo corsa su quel thread? In caso contrario, non sarà NSTask avviso che il compito finito (o l'operazione non sarà ancora finito) e non inviare la notifica.