我正在尝试使用 [FBRequestConnection startForMyFriendsWithCompletionHandler]
获取当前用户的 Facebook 好友 从主线程调用它时代码运行良好,但当我从中调用它时它永远不会进入完成处理程序后台线程
- (void)getFacebookFirneds {
[FBRequestConnection startForMyFriendsWithCompletionHandler:^(FBRequestConnection *connection,
id result,
NSError *error) {
if (!error) {
// this code is not reached !!
}
}];
}
即当我调用 [self getFacebookFirneds]
时它有效,但是当我使用 [self performSelectorInBackground:@selector(getFacebookFirneds) withObject:nil];
它永远不会进入完成处理程序,不知道为什么!
我也试过 FBRequest
得到了同样的结果
- (void)getFacebookFirneds {
FBRequest* friendsRequest = [FBRequest requestForMyFriends];
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
NSDictionary* result,
NSError *error) {
if (!error) {
// this code is not reached !!
}
}];
}
我也尝试使用 GCD 而不是 performSelectorInBackground
并得到相同的结果
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
[self getFacebookFriends];
});
最佳答案
如果您的处理程序需要时间来处理 friend ,您可以在主线程中调用 [self getFacebookFriends]
并在后台处理 friend 数组
即
- (void)getFacebookFriends {
[FBRequestConnection startForMyFriendsWithCompletionHandler:^(FBRequestConnection *connection,
id result,
NSError *error) {
if (!error) {
NSArray *facebookFriends = [result objectForKey:@"data"];
[self performSelectorInBackground:@selector(processFacebookFriends: ) withObject:facebookFriends];
}
}];
}
- (void)processFacebookFriends:(NSArray *)facebookFriends {
// put your code here
}
关于ios - 在 iOS 的后台线程中获取 Facebook 好友,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28562329/