我正在Xcode 4.6.2中开发一个只有一个目标的iPhone应用程序,我注意到一些重要文件不是我的目标成员。我的自定义头文件都不是目标成员资格的一部分,也不是我的Info.plist,我的前缀头或产品“MyApp.app。”
我理解目标的方式,这些文件肯定需要成为目标的成员。
我的问题是:为什么这些文件不是我的目标成员?
在搜索SO之后,类似的问题已经产生了一些见解,但并不能完全回答这个问题。我收集的见解是:
标头文件不是目标的成员,因为它们在“复制标题”构建阶段中链接。
Info.plist和Prefix.pch不是目标的成员,因为Info.plist在“复制包资源”构建阶段中链接,并且Info.plist包含指向的键/值条目前缀头(Prefix.pch)
答案 0 :(得分:14)
头文件是其他源文件引用的文件,以便他们知道类的接口是什么。它们不是二进制本身的一部分,因此它们不需要包含在最终产品中。
Info.plist
是一个特例,因为它定义了应用程序包本身,所以它是单独处理的。
一般来说,您希望文件成为目标的成员:
.m
)文件或库)或如果文件仅用作构建过程的一部分且在运行时不需要,则不需要文件成为目标的成员。通常,这是任何类型的头文件,包括预编译头文件(.pch
)。
答案 1 :(得分:3)
只需要为框架目标复制标头,并且只是因为它们是框架版本的一部分(它们允许用户知道如何使用框架)。应用程序不需要标头,因为它们是编译的独立实体。头文件(和pch文件)在编译期间使用,但在运行时不需要。
info.plist的处理方式不同。它通常不能被复制,因为在项目中它通常不被称为“Info.plist”。该文件也必须存在于应用程序中,因此Xcode不会为您提供不包含该文件的选项。
答案 2 :(得分:2)
只有.m
个文件和资源文件是目标的一部分,而不是.h
。
你是对的:Info.plist文件和标题都在构建设置中引用(这也是目标特定的)。