Sto lavorando con l'IOS Facebook SDK 3 e sto cercando di usarlo con l'approccio più efficiente. Quindi vorrei gestire alcune richieste in thread separati.Richiesta FB asincrona con blocco nel thread separato Problema
Per esempio questa richiesta (FUNZIONA PERFETTAMENTE):
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
dispatch_async(queue, ^{
[self generateShareContentFor:ShareServiceTypeFacebook
callback:^(NSMutableDictionary* obj)
{
FBRequest * rq = [FBRequest requestWithGraphPath:@"me/feed"
parameters:obj
HTTPMethod:@"POST"];
[rq startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
// TREATING RESULT
[[UFBManager defaultManager] errorHandlerFromError:error
fromRqType:UFBManagerRqTypePost];
});
}];
}];
});
sto usando questo per postare qualcosa sul mio feed, che io chiamo un metodo per caricare il contenuto di questa richiesta automaticamente e quindi questo blocco verrà chiamato nel metodo per avviare la richiesta. Questo funziona bene.
Il problema è che se non inserisco questa richiesta all'interno di un blocco, ciò non funziona.
Questa richiesta non funziona
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
dispatch_async(queue, ^{
FBRequest * rq = [FBRequest requestForMe];
[rq startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
// TREATING RESULT
[[UFBManager defaultManager] errorHandlerFromError:error
fromRqType:UFBManagerRqTypeGet];
});
}];
});
sto cercando di capire, ma non capisco qual è il problema. Grazie in anticipo per il vostro aiuto.
Dovrai fornire ulteriori informazioni. Cosa intendi con "non funziona"? –
Grazie per la risposta, Christopher, e mi dispiace per la mancanza di informazioni. Quando provo a eseguire il debug di questa seconda richiesta, posso registrare fino alla dichiarazione * rq, ma non ho alcun ritorno del gestore del blocco di completamento dichiarato durante l'avvio del metodo startCompletionHandler –