ios - iOS 13 上的 EXC_BAD_ACCESS

标签 ios swift exc-bad-access ios13

我正在维护一个由以前的开发人员完成的项目,它在 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 的图片:

enter image description here

我觉得崩溃与处理此 _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/

相关文章:

c - 错误将字符串中的字符转换为大写

ios - UITableView 单元格重复

objective-c - 本地化 iOS 上的剪切|复制|粘贴菜单

ios - 函数仅适用于第一个生成的 Sprite ,而不适用于另一个

ios - 将 UIImage 作为参数传递时访问错误 -iOS -Cocos2D

ios - 'EXC_BAD_ACCESS code=2' 尝试将对象从 VC 设置为另一个时发生错误

ios - iOS 中的 MVVM 模型

ios - 用户对协议(protocol) PFSubclassing 的冗余一致性(Swift 2.0)

swift - 在 Draw 中为 UIImageView 设置角半径

javascript - 使用 Swift 在 iOS WKWebview 中捕获 Javascript 事件