Ios 构建静态框架和与其他开源库的内部链接的设计方法

Ios 构建静态框架和与其他开源库的内部链接的设计方法,ios,networking,frameworks,static-libraries,afnetworking,Ios,Networking,Frameworks,Static Libraries,Afnetworking,我正在创建一个静态框架以分发给其他项目。我对构建框架的设计方法有些困惑。我以前从未构建过框架 我正在构建类似的东西,我将向框架传递一些唯一的id,它将在内部调用几个API,并将最终输出传输回具有适当委托的应用程序。在AdColony框架中,只有一个.h文件是公共的 我想知道一些问题: 1) 我计划使用AFNetworking进行所有服务器通信和解析。所以,在构建框架时,我如何将我的静态框架与AFNetworking连接起来。AFNetworking标头将在final.framework输出中可见

我正在创建一个静态框架以分发给其他项目。我对构建框架的设计方法有些困惑。我以前从未构建过框架

我正在构建类似的东西,我将向框架传递一些唯一的id,它将在内部调用几个API,并将最终输出传输回具有适当委托的应用程序。在AdColony框架中,只有一个.h文件是公共的

我想知道一些问题:

1) 我计划使用AFNetworking进行所有服务器通信和解析。所以,在构建框架时,我如何将我的静态框架与AFNetworking连接起来。AFNetworking标头将在final.framework输出中可见?如果我的框架需要外部AFNetworking链接,那么我强迫其他开发人员加入AFNetworking是一种好方法吗?或者我必须写下我自己的基本网络层

2) 我可以隐藏我所有的包装器和模型类,只让一个类对开发人员可见以进行配置和处理输出吗

除上述问题外,如果您有构建此框架的最佳设计方法,请提出建议。

1。您可以做两件事:
  • 将AFNetworking添加到您的框架中。并将AFNetworking的标头设置为公共标头。您可以更改一些include来创建一个干净的include头

  • 将您的框架与AFNetworking链接,并强制其他开发人员链接AFNetworking

如何知道采用哪种方法?

如果我的框架将提供一些网络层,我将使用第一种方法。我会维护我的项目。如果只在内部实现中使用AFNetworking,那么第二种方法很有用。但是当你改变你正在使用的东西时,你需要维护你的框架


2.是的,你可以。 您可以设置公共标题。因此,如果您只想拥有一个公共类,则需要将该头设置为public。请记住,.h中的所有方法都是公共的。因此,如果您想确保没有人可以调用您的方法,您需要将方法声明放在一个类别中,您将在.m中使用该类别


另一个建议:看看这个。

只是出于好奇,你是打算发布框架还是仅供个人(或内部)使用?@KaanDedeoglu是的,我计划发布框架。您对上述问题有个人意见或建议吗?我打算建议您创建自己的私有Cocoapods库,因为您不想隐藏实现细节。“您只能有一个公共标题。”对不起?你到底是怎么得出这个结论的?@KamilKocemba:也许你会向我解释错了。我的意思是他可以像公众一样头球得分。因为他的一个问题是:“只让开发人员可以看到一个类来配置和处理输出?”所以我的回答是:“是的,您可以将一个头设置为public”。对不起,我的英语不好。:)@德科巴塔看起来像是卡米尔投了你的反对票,他不明白实际的问题。我也看到了他的解决方案。他发布了一些与椰子荚有关的东西。我不明白cocoapods是如何负责构建静态框架和内部链接的。仅供参考:我将使用您的第二种方法,其中我将使用AFNetworking的内部实现,因为我不向其他开发者提供任何网络层MMM,cocoapods用于分发您的框架并解决框架所需的艾米依赖。遗憾的是,@KamilKocemba对我的答案投了反对票,只是因为他不理解这个问题。