我正在與IOS Facebook SDK 3,我試圖用更有效的方法。 所以我想在不同的線程中管理一些請求。異步FB請求與塊分離線程問題
例如該請求(PERFECTLY WORKS):
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];
});
}];
}];
});
我用這一個貼在我的飼料的東西,我調用一個方法來自動加載該請求的內容然後在該方法中調用該塊來啓動請求。 這個效果很好。
問題是如果我不把這個請求放在一個塊內,那是行不通的。
這個請求不起作用
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];
});
}];
});
我想弄清楚,但我不明白是什麼問題。 預先感謝您的幫助。
您將不得不提供更多信息。你的意思是「不起作用」? –
謝謝你的回答克里斯托弗,並對缺乏信息感到抱歉。當我嘗試調試這個第二個請求時,我可以記錄直到* rq聲明,但是我沒有任何返回在啓動startCompletionHandler方法時聲明的完成處理程序塊 –