我正在使用
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]; }); }]; }]; });
>我正在使用这个在我的Feed上发布内容,我调用一个方法来自动加载此请求的内容,然后在方法中调用此块以启动请求.
这个很好用.
>问题是如果我不将此请求放在一个块中,那就不起作用了.
此请求不起作用
dispatch_queue_t queue = dispatch_get_global_queue(disPATCH_QUEUE_PRIORITY_BACKGROUND,0); dispatch_async(queue,^{ FBRequest * rq = [FBRequest requestForMe]; [rq startWithCompletionHandler:^(FBRequestConnection *connection,NSError *error) { dispatch_async(dispatch_get_main_queue(),^{ // TREATING RESULT [[UFBManager defaultManager] errorHandlerFromError:error fromrqType:UFBManagerRqTypeGet]; }); }]; });
我想弄清楚,但我不明白是什么问题.
在此先感谢您的帮助.
解决方法
我有一点这个问题.
确保在主线程上分派代码.
dispatch_async(dispatch_get_main_queue,^{ FBRequest * rq = [FBRequest requestForMe]; [rq startWithCompletionHandler:^(FBRequestConnection *connection,NSError *error) { //The docs say this will be the main queue here anyway //Feel free to go on a background thread at this point }]; });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。