UIImagePickerController在iOS 8.x上取消缩放时崩溃

3
在我们的应用中,我们会将相机以模态框的形式显示在另一个UIViewController之上。但只有在iOS 8.x上,大约每10次缩放中就会导致崩溃:

PLImagePickerCameraView didHideZoomSlider:]: message sent to deallocated instance

已经存在一个SO帖子,其中有一种所谓的解决方法 - How-to find out what causes a didHideZoomSlider error on IOS 8? - 但是我尝试的每种变化都无法解决崩溃。建议是在dismissViewControllerAnimated:completion:之前添加延迟。无论我尝试什么延迟,我仍然可以重现崩溃。

只有在以下情况下才会发生崩溃:(1)如果您缩放相机视图;(2)选择取消或拍照并退出相机时,所有这些都在缩放指示动画消失之前不久。这似乎是iOS 8.x中苹果没有修复的问题。它在苹果的代码中崩溃,与我们没有任何关系。

我看到了“快照一个未被渲染的视图会导致空的快照。在快照之前,请确保您的视图已经至少被渲染一次,或者在屏幕更新后再进行快照。”但这似乎与我们所做的事情无关,并且也指的是UIImagePickerController内部的代码。
我即将与苹果DTS联系,以查看是否有办法避免这种情况,或者环境中可能导致这种情况发生的原因。我想在这里提问,以防有人有其他想法。
这个崩溃在iOS 7.X下没有发生。 在任何型号的iPhone或iPad上都会发生。

消息发送到已释放实例。您尝试过从呈现视图控制器中保持对图像选择器的强引用吗? - Jack
是的,基础的UIViewController在强引用中持有选择器。 - ahwulf
@ahwulf - 你是如何解决这个问题的?你将图像选择器设置为弱引用了吗?我也遇到了同样的问题。 - tech_human
不要忘记在 imagePickerControllerDidCancel:imagePickerController:didFinishPickingMediaWithInfo: 中都加上延迟时间。 - adamup
1个回答

1
苹果的回答是“这是一个错误,请在Radar中报告”,当然这并没有说明何时会修复。除了告诉用户稍等一下直到滑块消失(我们的支持人员告诉用户),没有其他解决方法。除了实现自己的相机和缩放支持并正确地执行,你无法做任何事情。

也许苹果会在8.2中修复它。


2
不行,在8.2版本中仍然崩溃。也许在8.3版本中可以解决。 - ahwulf
1
很遗憾,在8.3版本中仍然会崩溃。 - PaulB
仍在9.2版本中崩溃。 - AhabLives

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接