在 iOS 中在后台线程中获取 Facebook 好友
Getting Facebook friends in background thread in iOS
我正在尝试使用 [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];
});
如果您的处理程序需要时间来处理朋友,您可以在主线程中调用 [self getFacebookFriends]
并在后台处理朋友数组
即
- (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
}
我正在尝试使用 [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];
});
如果您的处理程序需要时间来处理朋友,您可以在主线程中调用 [self getFacebookFriends]
并在后台处理朋友数组
即
- (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
}