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

ani*_*jam 3 iphone objective-c dead-code

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

Ste*_*eve 8

这取决于您的构建设置.

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

在此输入图像描述

这是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:不会从二进制文件中删除死代码.

默认值:NO Companions:"GCC_DEBUGGING_SYMBOLS(调试符号级别)."前提条件:PRESERVE_DEAD_CODE_INITS_AND_TERMS

注意,文档说默认值为NO,但Xcode项目设置默认值为YES.


Mos*_*she 5

我相信添加到目标的任何资源都将在构建时编译和/或复制到您的应用程序包.要编辑构建/复制的文件,可以通过单击项目,然后单击目标来修改Xcode 4中的设置.在Build Phases下,您可以根据需要更改文件.

这是一个截图:

在此输入图像描述

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

在此输入图像描述

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