Non ho usato GCD o molto threading nelle mie app, ma mi sono imbattuto in una situazione in cui ho bisogno di eseguire un metodo o due su un altro thread. Una volta completato questo metodo, devo chiamare un altro metodo usando il thread principale da un callback. Ho cercato in giro per vedere come rilevare quando un thread ha terminato l'operazione, ma non è ancora chiaro sull'argomento.IOS Grand Central Dispatch con metodo di callback
Ho creato un'applicazione di test e ho appena utilizzato il metodo viewDidLoad per un rapido esempio.
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSLog(@"viewDidLoad called");
sleep(5); // simulating a thread being tied up for 5 seconds
dispatch_async(dispatch_get_main_queue(), ^{
[self callbackMethod]; // method called after above thread has completed running
});
});
}
Questo esempio funziona per quello che sto cercando di fare? Quando si esegue l'applicazione, sembra che il metodo di callback venga chiamato al termine di sleep (5). È questo il modo corretto di gestire questa situazione o sono fuori strada?
Sì, sembra che dovrebbe funzionare bene. – geraldWilliam
Ragazzi grazie per le risposte veloci! @matt grazie anche per i collegamenti aggiuntivi. Molto apprezzato! – tg2007