首页 > 解决方案 > watchOS 6 WKInterfaceImage 在释放时崩溃

问题描述

从 watchOS 6 SDK 的第一个测试版开始,如果使用 watchOS 6.0 SDK 编译,我的应用程序开始崩溃。watchOS 6.1 不会出现这些问题,并且在模拟器中更常见。现在我已经能够确定问题所在:

我有一个WKInterfaceImage使用一系列图像显示动画的微调器。如果我有一个WKInterfaceController显示这样一个微调器的新推送,它将在视图被关闭时崩溃。在内部使用SPInterfaceImageView它似乎被释放了两次。

这是 Xcode 日志消息:

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

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

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

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

标签: iosswiftapple-watchwatchos-6

解决方案


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

如果您的 watchOS 应用程序使用动画图像,例如我在问题中描述的微调器,则需要在 watchOS 6 SDK被解除image.stopAnimating()之前调用。WKInterfaceController

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

我希望这可以帮助任何收到这些错误消息的人: EXC_BAD_INSTRUCTION_UIImageContentContextualEffect .cxx_destruct堆栈跟踪

或上面提到的 -[SPInterfaceImageView release]: message sent to deallocated instance


推荐阅读