自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。
亲切的问候
亚历山大·海尼希
答案 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:)
很奇怪,但是它阻止了崩溃。