Contain
Contain 是一个为 IOS 项目设计的轻量级依赖注入框架。它是用 swift 编写的。
安装
Contain 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'Contain'
如何使用 Contain
在 AppDelegate 中创建一个容器实例
import UIKit
import Contain
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var container: ContainerProtocol?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
container = Container(appDelegate: self)
return true
}
}
在没有故事板的情况下,将容器注入到根视图控制器中并将其传递出去。
在处理故事板时,从应用程序的第一个屏幕中的 AppDelegate
访问容器并传递它
guard let container = (UIApplication.shared.delegate as? AppDelegate)?.container else {
return
}
。
要创建新的依赖项,在 Consumers.swift
中添加一个消费者
protocol MyClassConsumer: class {
var myClass: MyClass? { get set }
}
MyClass
需要从 BaseInjectable
继承或者遵循 Injectable
协议。注意:遵循 Injectable
时,确保遵循 BaseInjectable
中使用的构造器模式。
依赖项的任何消费者只需要从 BaseInjectable
继承或者遵循 Injectable
协议,并且遵循期望的 Consumer
协议。
《MyClassConsumer》示例
class MyClass: BaseInjectable {
}
class MyViewModel: BaseInjectable, MyClassConsumer {
var myClass: MyClass?
}
MyViewModel
现在可以使用容器注入,myClass
将分配到MyViewModel
的初始化器中。
如果容器被注入到视图控制器的初始化器中,视图模型可以按以下方式初始化
lazy var viewModel: { MyViewModel(container: container) }()
作者
anconaesselmann, [email protected]
许可
Contain可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。