当我使用约束并最小化App时,SceneKit崩溃

时间:2018-05-22 14:52:38

标签: swift scenekit exc-bad-access arkit

我的应用程序中有非常奇怪的行为,我无法解释。我正在运行SceneKit会话,并且某些nodes已分配constraints(无论何种类型)。当应用程序转到后台时,我将从nodes中删除所有scene,当它再次出现时我再次添加它们(由于此处不需要,这是必需的)。当我有constraints分配并恢复应用时 - 它会崩溃。不总是,但经常。我不知道该怎么做才能解决这个问题。我在删除constraints时尝试删除nodes,但这没有帮助。我得到的错误是截图。有人可以帮我找到解决方案吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

您的问题没有显示您引用的代码,但我可以告诉您,EXC_BAD_ACCESS错误通常意味着您正在尝试访问已从内存中释放的对象。

如果不深入了解strong vs. weak个变量,您可能会有weakunowned变量(对于该约束)变为nil并且您正在尝试访问(通过强制解包)。

当您删除这些节点时,或者当视图消失时,约束将从内存中释放。所以这里的修复是要么引用这个约束strong,要么创建一个新的约束,保持对类中的约束的强引用,并将该约束赋给对象。

假设您参考故事板,请替换:

@IBOutlet weak var constraint: NSLayoutConstraint!

使用:

@IBOutlet var constraint: NSLayoutConstraint!

另请注意,该变量可能是强制解包的(NSLayoutConstraint!),这可能是您遇到EXC_BAD_ACCESS错误的原因。将约束设置为强变量而不是弱变量,或者更好的是,尽可能避免强制展开选项!

注意:如果这不能解决您的问题,请在为问题添加更多详细信息后发表评论。