iOS依赖注入框架(最佳实践)

时间:2016-03-17 19:33:15

标签: c# ios objective-c dependency-injection caliburn.micro

我最近进入了一个测试覆盖率非常差的iOS团队(12%)。原因是没有代码隔离和模拟很难,因为与UI相关的大量代码位于控制器中,并且它们不会分离到不同的类中。

我正在尝试将依赖注入框架设置到此项目中,并预先考虑了代码覆盖率。

问题, 考虑我选择一个依赖注入框架,如Typhoon或Blood Magic或其他任何可用的东西。我可以分开做吗?就像一个ViewController一样。关于这个的任何提示?或者任何有助于实现这一目标的框架?该项目是一个大型项目,拥有大约150,000行代码。

任何帮助表示赞赏。我是iOS中的总菜鸟,但我理解依赖注入的概念,因为我在Windows应用程序开发中大量使用它。

2 个答案:

答案 0 :(得分:1)

嗨@golldy欢迎加入iOS开发!

在体验方面,我似乎完全相反:我有很多iOS开发经验但只是阅读了依赖注入,因此我以某种方式对它不熟悉。 ;)

虽然似乎有一个Swift solution for dependency injection并且没有对iOS中的依赖注入进行任何估价,但我想指出在iOS中有很多方法可以将责任与控制器分离

我同意批评iOS中的重载和不可测试的视图控制器。但我更喜欢像Coordinator suggestion by Khanlou这样的解决方案。也许你想看看?

祝你的考试好运!

<强> P.S: 请注意,Quick是一个受欢迎且值得推荐的编写测试框架(提高了可读性和更多DRY代码)。

答案 1 :(得分:0)

在添加框架之前,请考虑使用Xcode中已存在的标准工具链。 Xcode使用接口构建器来构造接口和原型对象图,可以在运行时取消存档。要注入一些依赖项,只需在xib(或storyboard)中添加对象(NSObject),在inspector中填充Class属性,然后进行插座连接。 NSObject有一些方法可以用来控制unarciving过程:-awakeFromNib,-awakeAfterUsingCoder:等等。

您可以在此处找到有关nib文件的更多信息https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html,请参阅“对象加载过程”部分