当项目中发生更改时,Xcode 如何编译文件?

Posted

技术标签:

【中文标题】当项目中发生更改时,Xcode 如何编译文件?【英文标题】:How does Xcode compile files when changes are made in a project? 【发布时间】:2013-05-16 12:39:57 【问题描述】:

我是 ios 编程和 Xcode 的新手。请帮助我了解 Xcode 是如何编译和运行代码的。

理想情况下,IDE 知道程序中所做的更改,并且在我们下次编译或运行它时,它知道哪些文件需要再次编译。但是,当我尝试在一个项目中添加情节提要时,该项目可以使用一些 ViewController 和 XIB 文件正常工作, 我将视图从现有的 xib 文件移动到情节提要中的 ViewController,并将类的名称更改为 Identity Inspector 中的相应 ViewController,然后删除了 XIB 文件。当我运行程序时,我没有看到任何不同的情况发生。出于好奇,我删除了所有 XIB 文件,然后再次运行程序,但项目仍然运行良好。

最后我删除了项目中存在的所有文件,当提示“发送到垃圾箱”或“删除引用”时,我选择删除引用并再次构建并运行应用程序,但没有问题,它再次运行完美。

之后我关闭了项目并再次从“Finder”打开项目并运行它,最后我得到了 30 多个错误,即使我在 Xcode 中将所有文件添加回项目后也没有解决。

请帮助我了解 Xcode 是如何编译项目的,以及我在将 XIB 文件中的视图移动到项目中的“故事板”时可能做错了什么。

【问题讨论】:

如果你能说明抛出了什么错误会有所帮助。 这些都是链接器错误,解决了 .o 文件中的问题。当我删除了所有文件时,这些就出现了。现在我知道,如果我“清理”一个项目,我就不会遇到这样的问题。但我想知道我将视图转移到 Storyboard 所遵循的过程是否正确。 【参考方案1】:

您的理解是正确的,XCode 应该检测更改并知道何时重建事物,但是,XCode 并不完美,有时会出现错误。您可以在产品菜单下"Clean" 项目来重建它。

你没有说你是否在模拟器上运行。我在添加或删除资源以及在设备上运行时经常遇到问题。要解决这些问题,您可以删除设备上的应用。

重新启动 XCode 也经常可以解决问题。

另外,请确保您拥有最新版本的 XCode。

如果您可以重新创建问题,请考虑提交bug report。

【讨论】:

@MKSingh,Apple 确实快速修复了常见且易于重新创建的错误,但那些罕见的错误仍然存​​在。总是针对最新版本的 XCode 提交错误,否则 Apple 只会回复,“最新版本上还会出现吗?”。 我在模拟器和 iPhone 上都运行过。

以上是关于当项目中发生更改时,Xcode 如何编译文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 xcode 项目中文件的位置?

XCTest:如果我只是对测试目标进行更改,如何防止 Xcode 不必要地重新编译我的项目

仅当特定文件集发生更改时如何触发构建

Angular:防止资产文件夹发生更改时自动重新编译

Xcode 在没有任何更改时重建项目

您可以在 Xcode 4 中批量更改每个文件的编译器标志吗?