如果某些东西没有在 C++ 中使用,那么它根本就不会被编译。iPhone也一样吗?如果我编译一个程序并且有未使用的类或其他东西,它会被编译还是忽略?
2 回答
这取决于您的构建设置。
在您的目标构建设置下,然后在“链接”下有一个“死代码剥离”选项。对于使用 Xcode 创建的项目,它默认为 yes。
这是来自 Apple 的构建设置文档的链接(摘录):
DEAD_CODE_STRIPPING(死代码剥离)
说明:布尔值。
指定是否从二进制文件中去除死代码。
先决条件:$GCC_DEBUGGING_SYMBOLS = full
价值观:
YES:满足先决条件时,从二进制文件中删除死代码。
NO:死代码不会从二进制文件中删除。
默认值:NO 伴侣:“GCC_DEBUGGING_SYMBOLS(调试符号级别)。” 先决条件:PRESERVE_DEAD_CODE_INITS_AND_TERMS
请注意,文档说该值默认为 NO,但 Xcode 项目设置默认值为 YES。
我相信添加到目标的任何资源都会在构建时被编译和/或复制到您的应用程序包中。要编辑构建/复制的文件,您可以修改 Xcode 4 中的设置,方法是单击项目,然后单击您的目标。在 Build Phases 下,您可以根据需要更改文件。
这是一个屏幕截图:
在 Build Settings 下还有一个 Dead Code Stripping 设置。看起来是这样的:
它默认为是,但如果您出于某种原因想要禁用它,这就是您要这样做的方式。