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