iOS 10 UIKit Zombie Crash,在iOS 7-9中运行良好

时间:2016-09-19 20:33:23

标签: ios objective-c iphone autolayout uikit

我们现在有一个相当大的应用程序,我们最近升级到iOS 10.这样做会引入一个新的错误,我们不知道怎么样解决它。

在调用layoutIfNeeded()期间发生崩溃。但是,除非layoutIfNeeded()调用包含在UIView.animateWithDuration()块中,否则不会发生崩溃。没有任何弱的引用,延迟或调度呼叫似乎有任何影响。在调用[super viewWillTransitionToSizeWithTransitionCoordinator]时可以触发相同的崩溃。

" Objective-C消息被发送到解除分配的' Bubble'对象(僵尸)地址:0x10924f030。"

启用Zombies显示我们有一个Release调用发送到我们的UIView子类之一,我们将其命名为Bubble。没有什么特别的,一些布局约束和手势识别器。

Instruments应用程序没有多大帮助,Xcode 8中也没有新的可视内存调试器(虽然它很棒,很少有关于该功能的文档)。

我已加入screenshot of Zombies during the crash here。虽然我知道保留计数可能会产生误导,但对于跟踪肯定存在一些令人困惑的问题,我们可以使用一些帮助来诊断这一点。

同样,这段代码在iOS 10之前运行良好。我们无法找到Apple关于UIKit可能产生影响的潜在变化的任何笔记。

更简短的信息:[Bubble cleanBubbles]简单地迭代传入的任何视图的子视图,如果它是一个Bubble类,则删除子视图。

对某些违反命名惯例的行为表示抱歉,我确定有很多可以批评的内容!

由于

0 个答案:

没有答案