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

Avi*_*ron 8 xcode objective-c header-files static-libraries ios

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

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

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

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

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

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

非常感谢你.

nsa*_*rno -1

关于公共/私人/项目标头,这是之前的答案,以防万一 \n=> /sf/answers/561143341/

\n\n

大多数时候,C/C++/Obj-C 库和框架都有一个主标头,其中包括所有其他标头。例如,Cocoa 框架就遵循这条路径。

\n\n

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

\n\n
#import "QuartzCore/CAAnimation.h"\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者

\n\n
#import "QuartzCore/Quartzcore.h"\n
Run Code Online (Sandbox Code Playgroud)\n\n

“QuartzCore.h”实际上仅由标头保护组成,并包含库的所有其他标头。

\n\n

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

\n\n

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

\n\n

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

\n\n

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

\n\n

看看这个很好的答案,了解为什么它完全适合您的需要:\n=> /sf/answers/447286171/

\n\n

Voil\xc3\xa0,希望这个答案对您有所帮助。

\n

  • 这个答案忽略了所有困难的问题(例如标头是否必须是公共/项目等,正确的输出位置是什么,如何告诉 Xcode 执行此操作),并回答了无论如何都不重要的琐碎问题,因为 Xcode 处理了附近的问题自动地。 (6认同)
  • @Adam我承认我可能误解了这个问题的要点。如果您确实能够提供更好的答案,那就太好了。 (3认同)