【问题标题】:How to inject dependencies over ios UIViewControllers如何在 ios UIViewControllers 上注入依赖项
【发布时间】:2015-10-23 16:40:41
【问题描述】:

假设我有一个我在 appDelegate 中创建的 NSObject 的实例,那么让我的一些 UIViewControllers 可以使用这个实例的最简单的方法是什么。

我知道不同的方法,但它们都不能真正满足我的需求

  1. 代表团 我可以定义一个协议 (MHSomeObjectDataSource) 并让 AppDelegate 实现它。
  2. 保持属性在 UIViewControllers (MSSomeObject) 上并始终在 UIViewControllers 实例化后设置它
  3. 使对象成为单例不可以,原因有很多

我对 1,2 的主要问题是我总是必须手动确保设置了属性/委托。

有没有一种我还不知道的便捷的依赖注入方式?

【问题讨论】:

    标签: ios objective-c swift uiviewcontroller dependency-injection


    【解决方案1】:

    有几个选择,也许其中一个适合你:

    • 如果您以编程方式创建控制器,则可以使用基于构造函数的注入并将这些依赖项作为指定初始化程序的必需参数传递。
    • 如果您不介意使用单例或其他可全局访问的 IoC 容器或依赖工厂,您可以使用子类在 awakeFromNib 或指定的初始化程序中触发注入。
    • 同样,您可以将 UIStoryboard 子类化以覆盖 instantiateViewControllerWithIdentifier 并将依赖项注入视图控制器(再次假设情节提要首先有一种很好的方法来获取它们)。
    • 如果您正在使用与 Objective-c 或 obj-c 兼容的类型,您可能会受益于现有的 DI 框架,例如 http://objection-framework.org/http://typhoonframework.org/.

    我认为https://www.objc.io/issues/15-testing/dependency-injection/ 也是一个很好的方法讨论。

    【讨论】:

      猜你喜欢
      • 2019-03-24
      • 2011-11-22
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 2020-12-20
      • 2020-03-14
      相关资源
      最近更新 更多