ios - 在 iOS 的后台线程中获取 Facebook 好友

标签 ios multithreading facebook facebook-graph-api grand-central-dispatch

我正在尝试使用 [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/

相关文章:

iphone - Fbconnect 在 ios 应用程序中像网络浏览器一样共享对话

ios - 自定义圆圈进度 View IOS

java - JUnit for future.get() 异常场景

Swift 线程 : When to use DispatchQueue. main.async?

c - 使用全局变量的线程问题

android - Facebook 在开发 Android 应用程序时只需要一个帐户登录设备

ios - AFNetworking EnqueueBatchOfHTTPRequestOperations 支持 setReachabilityStatusChangeBlock

ios - 如何创建可以从 IOS(swift) 应用程序连续接收数据的 AWS 服务器?

ios:在其 super View 中居中 View

ios - Facebook 审查因使用开放图谱照片而被拒绝