在iOS7.1中共享时取消UIActivityViewController

时间:2014-05-07 21:00:03

标签: ios objective-c uikit sharing uiactivityviewcontroller

我正在使用UIActivityViewController分享视频文件。 视频文件是在使用UIActivityItemProvider进行共享之前生成的。

由于文件生成和共享对于较长的视频可能需要一段时间,因此用户可以取消共享操作非常重要。

这一切在iOS7.0中都没有问题。用户可以随时点击UIActivityViewController上的取消按钮,共享操作已取消。

在iOS7.1.1上测试相同的功能时,在执行共享操作时点击取消按钮不再有效。就像主线程被阻塞一样,但所有共享代码都在后台线程上执行。

我在这里缺少什么,或者iOS7.1中是否存在已知的问题/变化? (我在发行说明中找不到任何内容)

更新

感谢所有评论。

进一步调试似乎表明可能存在线程问题。我的UIActivityItemProvider's项方法正在使用信号量来创建基于块的异步导出方法defacto synchronous。因此也阻止它正在执行的线程。我认为这应该不是问题,因为-(void)item方法的文档说:

  

在您应用的辅助线程上调用此方法。

在iOS7.0下,UIActivityItemProvider's取消方法是从另一个线程调用的,而不是使用信号量的那个(正如文档所预期的那样),但是在iOS7.1下,它可以从同一个调用(被阻止)线程,导致它永远不会执行?我无法测试,因为取消方法永远不会被执行,我不负责调用它。

是否有另一种方法可以强制我的导出方法同步执行而不会阻塞?基本上我的问题是UIActivityItemProvider' item方法有一个长期运行的导出方法,但是`UIActivityItemProvider仍然需要能够在导出时接收取消调用。

0 个答案:

没有答案