我的情况是,每次我的应用程序变为活动状态时,我都需要从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
答案 0 :(得分:0)
实际上在分析了代码之后我发现它是一个在- request:didLoad:
委托方法中完成的内部处理方法。所以我只是将内部处理方法放在dispatch_async块中,它在后台运行良好。
感谢您的帮助!