为什么XCode清理和构建修复EXC_BAD_ACCESS?

时间:2018-03-27 09:04:34

标签: swift xcode compiler-construction exc-bad-access

我看到很多人(包括我)因EXC_BAD_ACCESS因未知原因而面临崩溃。解决方案clean and build the project的许多答案都标记为正确。

我很好奇为什么会这样,以及如何清理和重新修复它,但似乎人们不关心并继续使用清洁构建解决方案。

这里有exampleEXC_BAD_ACCESS的干净构建解决方案。

就我而言,我面对的事情如此荒谬:

func viewDidLoad() {
    super.viewDidLoad()
    self.childVC.delegate = self // => Crashed EXC_BAD_ACCESS here. Fixed after clean and build
}

据我所知,这种情况在Swift中比Objective-C更常见。 可能是Swift的功能吗?

1 个答案:

答案 0 :(得分:2)

这些是我的想法:

运行后,如果尚未构建项目,则Xcode会在以下位置生成所需的构建文件:

  

〜/库/开发商/ Xcode中/ DerivedData /

如果未手动或自动清理项目,则会在运行的应用程序中重复使用相同的构建文件,以减少后续构建时间。

您可能已经注意到Xcode有时会在任何主要代码更改后自动清除构建。例如,在:

  • 更改静态变量
  • 更改swift项目中的objective-c代码

但Xcode仍然存在缺陷,有时在需要时不会自行清理,因此可以使用“破坏”的构建文件来运行,最终会导致EXC_BAD_ACCESS错误。

清理它将清除旧的构建文件,新构建不会出现同样的问题。