【发布时间】:2012-08-28 01:39:36
【问题描述】:
我正在使用 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];
});
}];
});
我想弄清楚,但我不明白问题出在哪里。 提前感谢您的帮助。
【问题讨论】:
-
您将不得不提供更多信息。 “不起作用”是什么意思?
-
感谢您的回答克里斯托弗,并很抱歉缺乏信息。当我尝试调试第二个请求时,我可以记录到 *rq 声明,但是在启动 startCompletionHandler 方法时声明的完成处理程序块没有任何返回
标签: ios facebook multithreading asynchronous objective-c-blocks