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

时间:2013-08-07 21:48:22

标签: ios xcode

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

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

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

在搜索SO之后,类似的问题已经产生了一些见解,但并不能完全回答这个问题。我收集的见解是:

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

    • 这听起来很合理,但我没有复制标题构建阶段
  2. Info.plist和Prefix.pch不是目标的成员,因为Info.plist在“复制包资源”构建阶段中链接,并且Info.plist包含指向的键/值条目前缀头(Prefix.pch)

    • 我并不认为这实际上是如何运作的

3 个答案:

答案 0 :(得分:14)

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

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

一般来说,您希望文件成为目标的成员:

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

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

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

你是对的:Info.plist文件和标题都在构建设置中引用(这也是目标特定的)。