如何以平滑的方式与具有许多依赖关系的扩展共享公共类?

时间:2015-07-22 06:45:45

标签: ios objective-c xcode

我目前正在开发一个iOS项目,我们现在想为Apple Watch添加一些功能。由于Apple Watch的扩展是一个不同的目标,我自然无法访问为App编写的代码。我在这里搜索了stackoverflow,并找到了两种不同的方法来解决这个问题。

  1. 创建动态框架。这肯定是最好的方法,但不幸的是应用程序必须支持iOS 6,而我发现这个解决方案只适用于iOS 8 +。

  2. 链接Build Phases中的文件 - >在文件检查器中编译源或通过目标成员身份。这里的主要问题是我们想要使用的两个类与许多其他类有很多依赖关系,这些类也有其他依赖关系等等。根据我的理解,如果我想使用我打算在扩展中使用的类,我还需要包含所有这些其他文件。

  3. 所以我的问题是,如果还有其他更好的方法来实现这一目标。如果我选择#2,首先我需要包含所有文件,之后,从维护的角度来看,如果我对那些文件进行更改,例如导入其他类,我需要包含那个文件在编译源/目标成员中。非常感谢有关此的任何想法或建议!谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道"深度"是关于第2点的耦合。但是,如果您可以使用接口(协议)而不是直接类引用,则可以只分离所需的类。

此外,您可以重新思考特定类是否真的需要其他类来操作(可能不是)或仅仅是某些方法。这些方法可以移动到协议和你的依赖类来实现它(现在这个类不需要成为AppWatch目标的一部分)。

如果您的项目非常庞大且课程紧密耦合,这将是繁重的工作。我建议你阅读this article about Dependency Injection,特别是'依赖性大于测试部分' :)