Xcode:复制标题:公共与私人与项目?


71

我正在构建一个Cocoa Touch静态库。我应该如何决定是否将头文件复制为公共文件,私有文件或项目文件?

Answers:


113

公开:该接口已最终确定,可供产品的客户使用。产品中包含公共标头作为可读源代码,没有限制。

专用:该接口不适合您的客户使用,或者处于开发的早期阶段。产品中包含一个专用标头,但标记为“专用”。因此,这些符号对所有客户端都是可见的,但是客户端应了解不应使用它们。

项目:该接口仅供当前项目中的实现文件使用。除对象代码外,项目标头不包含在目标中。这些符号对客户完全不可见,只有您自己可见。

来源: Xcode开发人员库>工具和语言> IDE>项目编辑器帮助>设置头文件的可见性


兰迪-您应该将Power的答案合并到您的答案中,使其成为更好的单个答案,恕我直言。
克里斯·马克

这是不正确的。苹果可能已经对此进行了记录-但是他们没有实现它。“公共”标头将防止您分发应用程序(Xcode中的错误),除非您取消耦合项目(不嵌入项目文件!)
亚当

2
有谁知道XCode 5中头文件的那些选项在哪里?
mindbomb

@mindbomb您可以在“目标成员身份”下的文件检查器中找到它们。
NoilPaw 2013年

25

兰迪的回答很好,并且为您提供了所有相关的背景知识。我想根据希望使用库的方式添加一些信息来帮助您。

项目:如果您正在分发项目,并且希望用户将您的项目作为自己的子项目包括在内,则应确保将标头标记为“项目”。不这样做将导致如下问题: Xcode 4存档版本未指定

请注意,这适用于每个子项目...递归地包括子项目的子项目。

公开:如果您希望库的用户仅链接到您的对象(而没有原始项目),请确保将标头标记为“公共”(仅适用于需要引用的标头)。


1
最重要的一点是要记住:由于上面提到的错误(xcode中的错误:如果一个库具有公共头文件,因此,Apple目前无法简单地“分发一个库”并让用户决定如何使用它)。并且是嵌入式的,Xcode存档器会中断,没有任何解决方法)
Adam

3
@Adam,如果您谈论的是Xcode中的错误,请提供发行号。这样的答案持续了很长时间,并且在$ SOME_RELEASE之后,现在的错误不再是错误。
詹姆斯·摩尔

@JamesMoore SO旨在很好地应对随时间变化的答案-我在这里看不到任何问题。除此之外...当苹果公司开始发布Xcode的发行说明时(我相信大多数Xcode更改会在苹果发布它们之前从发行说明中删除),并开始承认已知的错误,我们将有时间手动进行这些更新。在此之前,要花费大量精力不断编辑,重新编辑和重新检查与Xcode主要错误相关的许多SO帖子。
2013年

1
@JamesMoore ...版本?从1到5.1都在计数。在过去的12个月中,我已经报告了此错误以及其他20个错误。Xcode(5)的新版本已发布,此外,我们仍然拥有所有错误。我的一些错误被标记为重复,但未做任何事情。他们决定改进界面。今天,我的Xcode 5.1崩溃了12次。
2013年

@William Power如果公共头文件包含头文件HeaderB.h,而HeaderB.h中包含另一个头文件HeaderC.h,则HeaderB.h,HeaderC.h的可见性应该是什么。根据我的说法,所有在公共头文件中可见但不会直接包含在项目中的头都将标记为“私有”,而这些“私有”头中包含的所有头都可以标记为“项目头”。我正在链接库,而不是将其包含为子项目。
Deep Arora
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.