在构建应用程序时,Xcode是否编译了未使用的类?

时间:2011-09-06 00:03:53

标签: iphone objective-c dead-code

如果在C ++中没有使用某些内容,则根本不会编译它。 iPhone也是如此吗? 如果我编译一个程序并且有未使用的类或其他东西,它会被编译或忽略吗?

2 个答案:

答案 0 :(得分:7)

这取决于您的构建设置。

在目标构建设置下,然后在“链接”下有一个“死代码剥离”选项。对于使用Xcode创建的项目,它默认为yes。

enter image description here

以下是Apple的构建设置文档的链接(摘录):

http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html

  

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下,您可以根据需要更改文件。

以下是截图:

enter image description here

在Build Settings下还有一个Dead Code Stripping设置。这是看起来像:

enter image description here

默认为yes,但如果你想因某些原因禁用它,那就是你这样做的。