我看到很多人(包括我)因EXC_BAD_ACCESS
因未知原因而面临崩溃。解决方案clean and build the project
的许多答案都标记为正确。
我很好奇为什么会这样,以及如何清理和重新修复它,但似乎人们不关心并继续使用清洁构建解决方案。
这里有example个EXC_BAD_ACCESS
的干净构建解决方案。
就我而言,我面对的事情如此荒谬:
func viewDidLoad() {
super.viewDidLoad()
self.childVC.delegate = self // => Crashed EXC_BAD_ACCESS here. Fixed after clean and build
}
据我所知,这种情况在Swift中比Objective-C更常见。 可能是Swift的功能吗?
答案 0 :(得分:2)
这些是我的想法:
运行后,如果尚未构建项目,则Xcode会在以下位置生成所需的构建文件:
〜/库/开发商/ Xcode中/ DerivedData /
如果未手动或自动清理项目,则会在运行的应用程序中重复使用相同的构建文件,以减少后续构建时间。
您可能已经注意到Xcode有时会在任何主要代码更改后自动清除构建。例如,在:
但Xcode仍然存在缺陷,有时在需要时不会自行清理,因此可以使用“破坏”的构建文件来运行,最终会导致EXC_BAD_ACCESS
错误。
清理它将清除旧的构建文件,新构建不会出现同样的问题。