Objective - C静态库及其公共标题 - 什么是正确的方法?

时间:2012-05-10 07:49:52

标签: objective-c ios xcode static-libraries header-files

我正在构建一个将在多个iOS应用中使用的静态库。 与此同时,我正在使用我的库处理其中一个应用程序。

在开发过程中,我每天至少会遇到一个令人烦恼的错误,即有关未找到库的头文件(在我的应用程序项目中)。 我了解到,在构建静态库时,标题可以是PublicPrivateProject

我猜我想要在我的库中公开的每个标题都应该是Public

我的问题是,管理这些公共标头的最佳方法是什么?我应该为所有公共标题创建一个带有#import的主公共头文件吗? Xcode可以为我生成这样的文件吗?

另一个主要问题是Public Header Folder Path设置的建议值是多少?

我的主要目标是将来使用此库的项目将能够使用尽可能少的配置(添加链接器标志,更改User Header Search Path等)。

非常感谢。

1 个答案:

答案 0 :(得分:-1)

关于公共/私人/项目标题,以下是以前的答案以防万一 => https://stackoverflow.com/a/8016333/1075192

大多数情况下,C / C ++ / Obj-C库和框架都有一个主标题,包括所有其他标题。例如,Cocoa框架遵循此路径。

例如,要使用QuartzCore框架声明CAAnimation,您可以这样做:

#import "QuartzCore/CAAnimation.h"

#import "QuartzCore/Quartzcore.h"

“QuartzCore.h”实际上只包含一个标题保护,并包含该库的所有其他标题。

在我看来,使用第一个实际上更好,因为它不包括你不需要的所有声明。但大多数时候我们选择一次性包含所有内容的懒惰解决方案。

我不知道你是否可以直接用xCode生成这个,无论如何它很容易自己做,因为它只是一堆包含或导入。

公共头文件夹路径通常是“MyLibraryOrFramework / Headers”(例如,只需查看任何Cocoa的框架)。

最后,如果你想要一些真正可重用且无缝的东西,我建议你使用框架而不是静态库(几乎相似)。

看看这个很好的答案,理解为什么它完全符合你的需要: => https://stackoverflow.com/a/6389802/1075192

Voilà,希望这个答案有所帮助。