【问题标题】:Static library with SBJson for iOS带有 SBJson for iOS 的静态库
【发布时间】:2012-02-19 02:02:36
【问题描述】:

我正在开发一个需要使用开源 SBJson 类的静态库。

在分发我的静态库时,将 SBJson 类包含到我的库中而不需要包含其所有头文件 (.h) 的最佳方法是什么??

【问题讨论】:

  • 您图书馆的客户是否直接需要 SBJSON 功能?如果是这样,您需要为其提供标头。如果没有,你不应该这样做。

标签: objective-c ios xcode static-libraries sbjson


【解决方案1】:

最好的方法是不要(试图)隐藏依赖,然后告诉客户端他们需要构建和链接到 SBJson 库。

安全的替代方案是 SBJson 的一个分支,其中所有符号重新声明为不同的名称(例如,唯一的前缀)。这将确保您的客户零麻烦地将您的库与其依赖项链接起来。

【讨论】:

  • 这就是我想做的。这也将防止与另一个也可以使用相同库的静态库发生冲突
  • 有没有办法以编程方式添加前缀而无需手动输入并为所有符号添加前缀?
  • @LiyanChang 不安全(如果客户端也使用该库,请考虑链接和/或运行时冲突)。如果你使用 Xcode 中的重构工具,应该会很快。
【解决方案2】:

如果您创建一个静态库,任何使用该静态库的应用程序都需要知道该库可用的所有公共方法。

如果 SBJson 是您库的内部部分,那么您在分发应用程序时不必包含它的头文件。您只需包含面向公众的方法的 .h 文件。

在编译静态库时,不要在复制文件阶段包含 SBJson 的头文件。

【讨论】:

    猜你喜欢
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多