Objective c 如果从后台线程运行,则不会调用Facebook startForPostWithGraphPath completionHandler块

Objective c 如果从后台线程运行,则不会调用Facebook startForPostWithGraphPath completionHandler块,objective-c,facebook,objective-c-blocks,Objective C,Facebook,Objective C Blocks,我将错误处理添加到我的代码中,在Facebook上发布消息,但我遇到了一个我试图理解的奇怪行为。在FB的startForPostWithGraphPath的完成处理程序中,我检查是否有错误,如果有,我会等待几秒钟,然后再次尝试发布。我遇到的问题是,当我尝试调用该方法第二次发布此消息时,我在主线程上运行它,它工作正常。如果我尝试在后台线程上运行它,它会以静默方式失败。如中所述,完成处理程序永远不会被第二次调用 工作 失败 我很好奇是否有其他人有需要在主线程上调用FB请求方法的经验。在我看来,在后台

我将错误处理添加到我的代码中,在Facebook上发布消息,但我遇到了一个我试图理解的奇怪行为。在FB的startForPostWithGraphPath的完成处理程序中,我检查是否有错误,如果有,我会等待几秒钟,然后再次尝试发布。我遇到的问题是,当我尝试调用该方法第二次发布此消息时,我在主线程上运行它,它工作正常。如果我尝试在后台线程上运行它,它会以静默方式失败。如中所述,完成处理程序永远不会被第二次调用

工作

失败


我很好奇是否有其他人有需要在主线程上调用FB请求方法的经验。在我看来,在后台线程上调用重试逻辑是正确的行为,但由于某些原因显然不起作用。

我可以确认请求在主线程上起作用,在我的应用程序的后台线程上失败

我可以确认请求在我的应用程序的主线程上工作,在后台线程上失败

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];
               });