adr*_*aan 5 objective-c sharing uikit ios uiactivityviewcontroller
我正在使用a UIActivityViewController来共享视频文件.视频文件在使用之前共享之前生成UIActivityItemProvider.
由于文件生成和共享可能需要一段时间才能播放更长的视频,因此用户可以取消共享操作非常重要.
这一切在iOS7.0中都没有问题.用户可以随时点击取消按钮UIActivityViewController,共享操作被取消.
在iOS7.1.1上测试相同功能时,在执行共享操作时点击取消按钮不再有效.就像主线程被阻塞一样,但所有共享代码都在后台线程上执行.
我在这里缺少什么,或者iOS7.1中是否存在已知问题/变化?(我在发行说明中找不到任何内容)
UPDATE
感谢所有的评论.
进一步调试似乎表明可能存在线程问题.我的UIActivityItemProvider'sitem方法使用信号量来创建基于块的异步导出方法defacto synchronous.因此也阻止它正在执行的线程.我认为这应该不是问题,因为该-(void)item方法的文档说:
在您的应用的辅助线程上调用此方法.
在iOS7.0下,UIActivityItemProvider's取消方法是从另一个线程调用而不是使用信号量的线程(正如文档所预期的那样),但是在iOS7.1下,是否可以从同一个(被阻塞的)线程调用它,导致它永远不会被执行?我无法测试这个,因为取消方法永远不会被执行,我不负责调用它.
有没有另一种方法可以强制我的导出方法同步执行而不会阻塞?基本上我的问题是UIActivityItemProvider'item方法有一个长时间运行的导出方法,但是`UIActivityItemProvider仍然需要能够在导出时接收取消调用.