0

我的情况是,每次我的应用程序激活时,我都需要从 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

4

1 回答 1

0

实际上,在分析代码后,我注意到它是在- request:didLoad:委托方法中完成的内部处理方法。所以我只是把这个内部处理方法放在一个 dispatch_async 块中,它在后台运行得很好。

谢谢你的帮助!

于 2012-07-22T07:17:43.957 回答