11

我正在 Xcode 4.6.2 中开发一个只有一个目标的 iPhone 应用程序,我注意到一些重要文件不是我的目标的成员。我的自定义头文件都不是目标成员的一部分,我的 Info.plist、我的 Prefix 头文件或产品“MyApp.app”也不是。

以我理解目标的方式,这些文件肯定需要是目标的成员。

我的问题是:为什么这些文件不是我的目标成员?

在搜索 SO 之后,类似的问题产生了一些见解,但不是该问题的完整答案。我收集到的见解是:

  1. 头文件不是目标的成员,因为它们在“复制头”构建阶段被链接。

    • 这听起来很合理,但我没有 Copy Headers Build Phase
  2. Info.plist 和 Prefix.pch 不是目标的成员,因为 Info.plist 在“复制捆绑资源”构建阶段被链接,并且 Info.plist 包含指向前缀标头 (Prefix.个人电脑)

    • 我不确定这实际上是如何工作的
4

3 回答 3

17

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

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

一般来说,您希望文件在以下情况下成为目标的成员:

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

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

于 2013-08-07T22:02:45.703 回答
3

仅需要为框架目标复制标头,并且仅因为它们是框架版本的一部分(它们允许用户知道如何使用框架)。应用程序不需要标头,因为它们是独立编译的实体。头文件(和 pch 文件)在编译期间使用,但在运行时不需要。

info.plist 的处理方式不同。它通常不能仅仅被复制,因为在项目中它通常不被称为“Info.plist”。该文件还必须存在于应用程序中,因此 Xcode 不会为您提供不包含它的选项。

于 2013-08-07T22:02:45.973 回答
3

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

你是对的:Info.plist 文件和标头都在构建设置中引用(同样是特定于目标的)。

于 2013-08-07T22:00:57.103 回答