Xcode:哪些文件需要成为我的目标成员?(目标成员资格)

11
我正在使用Xcode 4.6.2开发iPhone应用程序,只有一个目标,但我注意到一些重要的文件不是我的目标成员。我的自定义头文件、Info.plist、Prefix header或产品"MyApp.app"都不是目标成员。
在我理解的目标方式下,这些文件肯定需要成为目标成员。
我的问题是:为什么这些文件不是我的目标成员? 在Stack Overflow上搜索类似的问题会得到一些见解,但并不能完全回答这个问题。我收集的见解如下:
1.头文件不是目标成员,因为它们在“Copy Headers”构建阶段中被链接。
- 这听起来合理,但我没有“Copy Headers”构建阶段。
2.Info.plist和Prefix.pch不是目标成员,因为Info.plist在“Copy Bundle Resources”构建阶段中被链接,并且Info.plist包含一个键/值条目,指向前缀头(Prefix.pch)。
- 我不确定这是否实际上是它的工作方式。
3个回答

17

头文件是其他源代码文件引用的内容,以便它们知道类的接口。它们不需要作为二进制本身的一部分,因此不需要包含在最终产品中。

Info.plist 是一个特殊情况,因为它定义了应用程序包本身,所以要单独处理。

一般来说,当文件:

  • 构成可执行文件的一部分(如实现(.m)文件或库),或
  • 作为应用程序包中的文件包含(如图像)

您需要将文件作为目标的成员,如果它们仅作为构建过程的一部分使用,并且在运行时不需要。通常,这是任何类型的头文件,包括预编译头文件(.pch)。


1
这很有道理。XCode需要头文件,但我的应用程序不需要。那么Info.plist只是定义应用程序包而不实际打包进去吗? - T Blank

3

只有.m文件和资源文件是目标的一部分,而不是.h文件。

您是正确的:Info.plist文件和头文件都在构建设置中引用(这些设置再次是特定于目标的)。


3

仅针对框架目标需要复制头文件,因为它们是框架发布的一部分(它们使用户知道如何使用框架)。应用程序不需要头文件,因为它们是独立编译的实体。头文件(以及pch文件)在编译过程中使用,但在运行时不是必需的。

info.plist处理方式不同。通常不能直接复制,因为在项目中通常不叫“Info.plist”。该文件在应用程序中存在是强制性的,所以Xcode没有不包含它的选项。


简短而精炼的回答,自我解释一切。 - technerd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接