使用纯 Swift 编写的极简依赖注入机制。
支持任何第一方 Swift 平台。[ iOS / iPadOS / watchOS / macOS / Linux ]
经过充分测试。在 Infomaniak iOS 应用程序的生产环境中使用。
基于属性包装器,使用 @LazyInjectService
和 @InjectService
。
优化后可与 SwiftUI Views 良好配合使用。
@(Lazy)InjectService
不会在 View
重绘时重新解析。在应用程序生命周期的早期,你需要编写如下代码:
import InfomaniakDI
[…]
let factory = Factory(type: SomeService.self) { _, _ in
SomeService()
}
do {
try SimpleResolver.sharedResolver.store(factory: factory)
}
catch {
FatalError("unexpected DI error \(error)")
}
之后,当你想解析服务时,像这样使用属性包装器:
@InjectService var injected: SomeService
注入将在属性所有者的初始化时执行。
使用 @LazyInjectService
在首次使用包装的属性时进行解析。当用作属性时,优先选择 @LazyInjectService
。
查看 ITSimpleReslover.swift
获取更多高级示例。
此软件包根据宽松的 ApacheV2 许可证提供,供您使用。