Ich arbeite mit dem IOS Facebook SDK 3, und ich versuche, es mit dem effizienteren Ansatz zu verwenden. Also möchte ich einige Anfragen in separaten Threads verwalten.Async FB Anfrage mit Block in getrennten Thread Ausgabe
Zum Beispiel dieser Anfrage (funktioniert einwandfrei):
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];
});
}];
}];
});
ich dies bin mit etwas auf meinem Feed zu veröffentlichen, rufe ich eine Methode, den Inhalt dieser Anfrage automatisch geladen und dann wird dieser Block in der Methode aufgerufen, um die Anfrage zu starten. Dieser funktioniert gut.
Das Problem ist, wenn ich diese Anfrage nicht in einen Block setzen, funktioniert das nicht.
Diese Anfrage funktioniert nicht
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];
});
}];
});
Ich versuche, herauszufinden, aber ich verstehe nicht, was das Problem ist. Vielen Dank im Voraus für Ihre Hilfe.
Sie müssen einige weitere Informationen bereitstellen. Was meinst du mit "geht nicht"? –
Danke für deine Antwort Christopher, und Entschuldigung für den Mangel an Informationen. Wenn ich versuche, diese zweite Anfrage zu debuggen, kann ich bis zur * rq -Deklaration loggen, aber ich habe keine Rückkehr von dem Block der Vervollständigung-Handler beim Start der startCompletionHandler-Methode –