我的公司希望为iOS开发提供两种不同的SDK以及使用每种SDK的示例应用程序。两个SDK都使用了许多常用代码,这些代码不属于SDK的公共接口。
我想构建项目,以便在一个静态库框架(我们保持私有)中使用我们的公共代码,并让每个SDK都是自己的静态库框架(我们发布)。 SDK框架各自依赖于通用框架。
我已经完成了这个设置和工作,除了一件事......公共库中有一些父类在SDK代码中使用。为了在SDK代码中发布子类,我需要导出父类的标头(仅在私有的通用框架中)以及SDK框架。
有关如何解决此问题的任何建议?以下是最重要的优先事项:
答案 0 :(得分:0)
拥有一个比其祖先更高能见度的课程是一个棘手的问题。事实上,一些非常流行的语言和运行时禁止它(就像使用.NET Framework的语言一样)。
没有明显的解决方案。在我看来,最简单的方法是只为字段发布私有类的标题。这些方法可以省略。这就是在Apple框架中隐藏“私有”方法的方式(这基本上会使该类“公开”,但所有方法都将被隐藏)。
另一个解决方案是使用合成而不是继承来获取功能。使您的公共类继承自NSObject
,并为其提供私有类的实例(使用id
字段隐藏其类型。)
答案 1 :(得分:0)
您只需将这些公共头文件作为Xcode中的引用添加到两个框架中。 Xcode项目文件可以引用该项目文件夹外部的文件。然后,您可以选择使用“复制页眉文件”构建阶段发布它们。
答案 2 :(得分:0)