3

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

4

2 回答 2

9

这取决于您的构建设置。

在您的目标构建设置下,然后在“链接”下有一个“死代码剥离”选项。对于使用 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 = full

价值观:

YES:满足先决条件时,从二进制文件中删除死代码。

NO:死代码不会从二进制文件中删除。

默认值:NO 伴侣:“GCC_DEBUGGING_SYMBOLS(调试符号级别)。” 先决条件:PRESERVE_DEAD_CODE_INITS_AND_TERMS

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

于 2011-09-06T00:19:42.263 回答
5

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

这是一个屏幕截图:

在此处输入图像描述

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

在此处输入图像描述

它默认为是,但如果您出于某种原因想要禁用它,这就是您要这样做的方式。

于 2011-09-06T00:20:12.353 回答