我正在与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方法时声明的完成处理程序块 –