自watchOS 6 SDK的第一个beta版本以来,如果使用watchOS 6.0 SDK进行编译,我的应用程序开始崩溃。 watchOS 6.1不会出现此问题,而在模拟器中则更容易发生。
现在,我已经能够确定问题所在:

我有一个WKInterfaceImage,它显示通过使用一系列图像设置动画的微调框。如果我推送了一个新的WKInterfaceController来显示这样的微调器,则在关闭 View 时会崩溃。
内部使用的是SPInterfaceImageView,它似乎被发布了两次。

这是Xcode日志消息:

-[SPInterfaceImageView release]: message sent to deallocated instance 0x3971ed60

有没有人遇到过同样的问题?我猜这是watchOS SDK中的错误。

我不能提供任何源代码,因为仅通过使用Storyboards便会发生这种情况。我的开发语言是Swift。

亲切的问候
亚历山大·海尼希

最佳答案

好吧,我问了这个问题之后,我终于发现了导致此问题的原因!

如果您的watchOS应用程序使用了动画图像(如我在问题中描述的微调器),则必须先使用watchOS 6 SDK调用image.stopAnimating(),然后再消除WKInterfaceController

这可以通过didDeactivate()方法完成,或者在关闭 ImageView 时完成。仅显示隐藏 ImageView 是不够的!当 ImageView 具有固定大小时,它也有帮助。

我希望这对得到其中一些错误消息的人有所帮助:
堆栈跟踪中带有EXC_BAD_INSTRUCTION_UIImageContentContextualEffect .cxx_destruct或上述-[SPInterfaceImageView release]: message sent to deallocated instance

关于ios - watchOS 6 WKInterfaceImage在释放时崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58389895/

10-12 01:25