在Xcode"复制标题"阶段,"项目"下的标题之间有什么区别?部分和"私人"部分?你什么时候想要使用它们?
另外,我可以理解你为什么要复制公共标题(例如对于静态库) - 但为什么要复制私有标题?
编辑:下面的@mipadi解释了公共和私人部分的角色。但是,我仍然忽略了在"项目"中包含标题之间的区别。部分与没有标题在"复制标题"的任何部分。相。
答案 0 :(得分:15)
如果公共标头包含私有标头,则必须复制私有标头,但是您希望确保库或框架的使用者知道这些私有标头不属于公共API。
“项目”标题是公共标题中包含非的私有标题(它们通常是内部实现的一部分,因此仅包含在实现中 - .c
或.m
- 文件)。
构建框架时,公共头文件将复制到框架的Headers
目录中,而私有头文件将复制到PrivateHeaders
目录中。
答案 1 :(得分:6)
@Danra,如果您将标题放在“项目”下,那么无论标题的实际位置如何,这些标题都会对您的实施可见。
比方说,你有这样的文件夹结构: /Sources/libAF/AFSomething.h /Sources/libAF/AFSomething.m /Sources/exec/main.m
如果您在“Project”下放置了“AFSomething.h”,则可以在main.m中使用它,如下所示: #import“AFSomething.h”
在外行人的术语中,虽然您省略了实际路径信息,但Xcode将包含项目标题。
答案 2 :(得分:0)
来自Setting the Visibility of a Header File:
公开:界面已定稿,供您的产品客户使用。公共标题作为可读源代码包含在产品中,没有任何限制。
私有:该界面不适合您的客户或处于开发的早期阶段。产品中包含一个私有标题,但它标记为“私有”。因此,所有客户都可以看到符号,但客户应该明白他们不应该使用它们。
项目:该接口仅供当前项目中的实施文件使用。除目标代码外,目标中不包含项目头。客户完全看不到这些符号,只有你自己。
答案 3 :(得分:0)
为了补充一点,通常人们会有一个脚本来“清理”私人标题,这样公众就无法看到符号是什么。为了调试/开发目的,请保留私有标头,它们在开发和调试阶段派上用场。