【问题标题】:Is it ok to include other frameworks or libraries in my framework?可以在我的框架中包含其他框架或库吗?
【发布时间】:2011-08-30 17:29:09
【问题描述】:

背景:我即将开始为我的客户准备我的第一个框架,以便他们可以轻松地将其集成到他们的应用程序中并从我的服务器获取数据,而无需处理与服务器的通信是如何工作的。我选择ASIHTTPRequest库进行交流。

问题:我应该如何处理 ASIHTTPRequest 或任何其他静态库 - 使其成为我框架的一部分或让采用者自己在他们的项目中链接它?

我选择让它成为我框架的一部分,这样我就可以防止用户在ASIHTTPRequest 中设置断点并轻松访问/记录连接帧/数据。但是如果我的客户出于自己的目的需要这个库会发生什么?他们能第二次链接吗?它不会导致任何运行时冲突吗?

抱歉措辞...如果我混淆了任何术语,请让我更正:)

【问题讨论】:

    标签: iphone ios frameworks


    【解决方案1】:

    看看 ASIHTTPRequest 是如何处理它的 :)

    它们让您链接到许多 iOS 框架,但它们不会随下载一起提供。

    但是,他们确实在他们的库中提供了 Reachability 的代码 - 如果您还没有它,那么您可以包含它。如果你的项目中已经有了它,那也没关系。

    我会将 ASI 的源代码放在一个单独的文件夹中 - 然后您的用户可以包含或不包含它。

    这还具有确保他们使用的 ASI 版本可以与您的库一起使用的好处;)

    (参见 ASI docs here

    【讨论】:

    • 我想我明白了你的想法,但是我想做一些相反的事情 - 隐藏我的框架的源代码(即准备一个框架包,其中包含版本和标题目录以及动态共享库)。这样我想我会阻止在 ASI 中设置断点,因为它将包含在可执行文件中。我认为您的观点是,这不是一种用户友好的方法,因为如果我的包已编译 ASI,用户将无法使用它,对吗?
    【解决方案2】:

    有两种不同类型的框架需要考虑,所以我会做两件事:

    1. 对于您使用的任何第三方库(如 ASI),包括 与 deanWombonurne 指示的源目录。如果不清楚(如果需要,请添加 VERSION 文件或命名目录),请务必指明您包含的库版本。

    2. 对于 Apple 框架,在某处包含一个清单文件,该文件提供 他们应该包含在他们的所有 Apple 框架的列表 项目以满足您的框架要求。

    【讨论】:

    • 所以最好将所有 3rd 方框架都放在我的框架之外,并要求我的用户将它们包含在他们的项目中?这样我的框架和他们的项目都可以使用这些 3rd 方框架吗?如果我将 3rd 方软件编译到我的包的可执行文件中,他们将无法使用我已经包含的框架?另请参阅我对 Dean 回答的评论。谢谢 :) 现在我想我会深入了解 Apple 的 Bundle 和 Framework 编程指南。
    • 最好公开您正在使用的库,以便您的库的用户知道不要再次添加它 - 如果您刚刚将它嵌入到您的库中并且有人添加了 ASI(这极有可能) 这些符号会在链接时与您的库中的符号冲突。还包括它更明显地允许您的框架的用户选择升级到更高版本,但存在兼容性风险,但它可能会为他们提供他们真正需要的功能。如果您真的很友善,您还将发布一组单元测试,以验证您所依赖的第三方库的功能仍然有效。
    • 感谢 Kendall 的彻底回复 - 这对我帮助很大。 SO 社区太棒了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 2016-05-18
    • 1970-01-01
    相关资源
    最近更新 更多