我正在使用 IOS Facebook SDK 3,并且正在尝试以更有效的方法使用它。所以我想在单独的线程中管理一些请求。
例如这个请求(完美运行):
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];
});
}];
});
我试图弄清楚,但我不明白是什么问题。在此先感谢您的帮助。