gpt4 book ai didi

ios - 如何通过 ios UIViewControllers 注入(inject)依赖项

转载 作者:行者123 更新时间:2023-11-29 01:32:31 25 4
gpt4 key购买 nike

假设我有一个在 appDelegate 中创建的 NSObject 实例,那么使该实例可用于我的某些 UIViewController 的最简单方法是什么。

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

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

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

有没有我还不知道的方便的依赖注入(inject)方法?

最佳答案

有几个选项,也许其中一个适合您:

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

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

关于ios - 如何通过 ios UIViewControllers 注入(inject)依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33307447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com