gpt4 book ai didi

ios - NSLayoutConstraint VFL 由于 EXC_BAD_ACCESS 崩溃

转载 作者:行者123 更新时间:2023-11-30 12:57:36 26 4
gpt4 key购买 nike

我正在开发的应用程序有很多视觉格式的限制。在一次操作中集中一些网络请求后,我开始遇到 EXC_BAD_ACCESS 崩溃。如果我通过 NSLayoutConstraint(item....) 初始值设定项手动创建约束,则不会发生任何崩溃。

这是我的代码中发生崩溃的行:

enter image description here

这是崩溃日志: enter image description here

什么可能导致这次崩溃?以及如何修复它?

最佳答案

在创建 NSLayoutConstraints 数组然后从数组中一次性激活所有内容时,我遇到了同样的问题。

当您导航离开某个 View 然后返回该 View 时,有时该 View 可能会分配给不同的内存分配并导致错误访问错误。

事情是这样的。每次 View 加载时,新的约束都会添加到数组中(假设您添加它们并从 .viewDidLoad() 函数或每次 View 再次可见时加载的类似函数激活它们)。

当您离开数组时,数组不会自行清空,因此旧的约束也保留在数组中。当您导航回 View 并尝试激活约束时,系统会尝试再次激活旧约束(它们引用的内存不再包含约束所引用的任何 View )。

要解决此问题,请在向数组添加新约束之前对数组调用 .RemoveAll()。这将确保所有旧的约束都被删除,并且系统不会尝试激活它们。

这是一个例子。

var initialConstraints = [NSLayoutConstraint]()

override func viewDidLoad() {
super.viewDidLoad()

// Empty the array once the view loads
initialConstraints.removeAll()

// Add your constraints like normal
initialConstraints.append(...)

// Activate your constraints once you've added them to the array (like normal)
NSLayoutConstraint.activate(initialConstraints)

}

希望这有帮助!

关于ios - NSLayoutConstraint VFL 由于 EXC_BAD_ACCESS 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40244582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com