iOS - 使用GCD在后台下载Facebook数据

时间:2012-07-21 18:42:22

标签: objective-c delegates grand-central-dispatch

我的情况是,每次我的应用程序变为活动状态时,我都需要从Facebook同步一些数据。此同步应在后台进行,不应锁定GUI(因此不应在主队列上运行)。

所以在我的- applicationDidBecomeActive:方法中我有这个代码:

dispatch_async(dispatch_get_global_queue(0,0), ^{

    [[FacebookHelper sharedInstance] syncData];
});

FacebookHelper是一个单一类,负责处理所有Facebook。在FacebookHelper类中,我实现了Facebook委托方法。但由于某种原因,当我运行上述代码时,Facebook委托方法- request:didLoad:(当Facebook数据完成下载时)从未被调用。虽然如果我使用dispatch_sync运行相同的代码,它将完成(但是GUI将被阻止)。

编辑:Facebook SDK v2

1 个答案:

答案 0 :(得分:0)

实际上在分析了代码之后我发现它是一个在- request:didLoad:委托方法中完成的内部处理方法。所以我只是将内部处理方法放在dispatch_async块中,它在后台运行良好。

感谢您的帮助!