Mi sono imbattuto in questo pezzo di codice e non riesco a capire perché l'autore abbia fatto questo. Date un'occhiata a questo codice:In questo caso è necessario dispatch_async (dispatch_get_main_queue(), ...)?
someMethodStandardMethodUsingABlock:^() {
dispatch_async(dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] postNotificationName:"notif" object:nil];
});
}];
Ho un metodo con un blocco di completamento e in questo blocco deve essere inviata una notifica. Non capisco perché il dispatch_async
sulla coda principale sia necessario in questo caso. Il blocco sarà già eseguito sul thread principale, e anche se non fosse, non penso che sarebbe davvero importante lo farebbe? Avrei semplicemente scritto:
someMethodStandardMethodUsingABlock:^() {
[[NSNotificationCenter defaultCenter] postNotificationName:"notif" object:nil];
}];
E funziona nei miei test.
Se puoi aiutarmi a far luce su questo, lo apprezzerei davvero!
Matt
Grazie a David, b sembra adattarsi al mio caso. I documenti non sembrano specificare, ma è importante se la notifica viene inviata su un thread diverso da quello registrato dall'osservatore? Con questo intendo che l'osservatore ha ancora raggiunto – MGA
Sì, l'osservatore riceverà comunque la notifica anche se è stata inviata su un thread diverso. –