watchOS 6 WKInterfaceImage在释放时崩溃

时间:2019-10-15 08:01:20

标签: ios swift apple-watch watchos-6

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

我有一个WKInterfaceImage,它正在显示通过使用一系列图像设置动画的微调框。如果我有新的WKInterfaceController推送显示了这样的微调器,则在视图消失时会崩溃。 在内部使用SPInterfaceImageView似乎被释放了两次。

这是Xcode日志消息:

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

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

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

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

2 个答案:

答案 0 :(得分:7)

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

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

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

我希望这对收到某些错误消息的人有所帮助: EXC_BAD_INSTRUCTION_UIImageContentContextualEffect .cxx_destruct在堆栈跟踪中

或上述-[SPInterfaceImageView release]: message sent to deallocated instance

答案 1 :(得分:1)

我遇到了同样的问题,并通过为repeatCount的{​​{1}}参数传递了一个非零值来解决了这个问题

所以我最终得到了这样的东西:

startAnimatingWithImages(in:duration:repeatCount:)

很奇怪,但是它阻止了崩溃。