我的应用程序中有非常奇怪的行为,我无法解释。我正在运行SceneKit
会话,并且某些nodes
已分配constraints
(无论何种类型)。当应用程序转到后台时,我将从nodes
中删除所有scene
,当它再次出现时我再次添加它们(由于此处不需要,这是必需的)。当我有constraints
分配并恢复应用时 - 它会崩溃。不总是,但经常。我不知道该怎么做才能解决这个问题。我在删除constraints
时尝试删除nodes
,但这没有帮助。我得到的错误是截图。有人可以帮我找到解决方案吗?
答案 0 :(得分:0)
您的问题没有显示您引用的代码,但我可以告诉您,EXC_BAD_ACCESS错误通常意味着您正在尝试访问已从内存中释放的对象。
如果不深入了解strong vs. weak个变量,您可能会有weak
或unowned
变量(对于该约束)变为nil
并且您正在尝试访问(通过强制解包)。
当您删除这些节点时,或者当视图消失时,约束将从内存中释放。所以这里的修复是要么引用这个约束strong
,要么创建一个新的约束,保持对类中的约束的强引用,并将该约束赋给对象。
假设您参考故事板,请替换:
@IBOutlet weak var constraint: NSLayoutConstraint!
使用:
@IBOutlet var constraint: NSLayoutConstraint!
另请注意,该变量可能是强制解包的(NSLayoutConstraint!
),这可能是您遇到EXC_BAD_ACCESS错误的原因。将约束设置为强变量而不是弱变量,或者更好的是,尽可能避免强制展开选项!
注意:如果这不能解决您的问题,请在为问题添加更多详细信息后发表评论。