我正在向向 Facebook 发布消息的代码添加错误处理,但遇到了我试图理解的奇怪行为。在我的 FB startForPostWithGraphPath 完成处理程序中,我检查是否有错误,如果有,我会等待几秒钟,然后再尝试再次发布。我遇到的问题是,当我尝试再次调用该方法来发布此消息时,我在主线程上运行它,它工作正常。如果我尝试在后台线程上运行它,它会静默失败。就像在完成处理程序中一样,它永远不会被第二次调用。
作品
dispatch_after(popTime, dispatch_get_main_queue(),
^(void){
[MYSocial shareToOpenGraph:poll];
});
失败
dispatch_after(popTime, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
^(void){
[MYSocial shareToOpenGraph:poll];
});
我很好奇是否有人对需要在主线程上调用的 FB 请求方法有任何经验。在我看来,在后台线程上调用重试逻辑是正确的行为,但显然由于某种原因不起作用。