我正在维护一个由以前的开发人员完成的项目,它在 iOS 13 上开始经常崩溃。
崩溃总是相同但在不同区域:Thread 1: EXC_BAD_ACCESS (code=2, address=0x7ffee3a48f88)
请注意,这在以前的 iOS 版本中仍然有效,只是在 iOS 13 中不。
问题是在尝试访问 UIView
时引起的。例如,它在 cellView.layoutIfNeeded()
行中的以下代码片段中崩溃。这很奇怪,因为 _view
当然存在,因为它进入 if let
。
if let cellView = _view as? UITableViewCell {
cellView.layoutIfNeeded()
}
我还将添加来自 Xcode 的图片:
我觉得崩溃与处理此 _view
的方式有关。
您通过以下方式传递 View :
objc_getAssociatedObject(self, &theKey) 作为?自定义 View
这个CustomView的设置方式:
var customView: CustomView? {
get {
return objc_getAssociatedObject(self, & theKey) as? CustomView
}
set {
objc_setAssociatedObject(self, & theKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
有人见过类似的东西吗?
我也查看了 ios 13 的发行说明,但没有发现任何相关内容。
谢谢
最佳答案
尝试将 _view
属性重命名为不太通用的名称。
我最近遇到了一个名为 _containerView
的属性的问题,它看起来像是由于 UIKit 工作方式(它是用 ObjC 编写的)和动态方法分派(dispatch)的一些变化,UIKit 可能正在使用您的变量相反,如果它自己导致崩溃。
关于ios - iOS 13 上的 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58390532/