测试经过测试 | ✓ |
语言Swift 语言 | SwiftSwift 版本 |
许可 | MIT |
发布最新发布 | 2017年9月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✓ |
由 Justin Kolb 维护。
一个极简的类型安全 Swift 依赖注入工厂。所有真正的实例都在这里锻造。
循环引用仅通过使用 setter 注入来处理。这是因为所有实例都在setter注入触发之前的构建阶段创建,允许在需要之前建立引用。
您可以将源代码复制到您的项目中,或者设置一个从本仓库的 git 子模块,并将项目拖到您的项目中作为子项目。
import FieryCrucible
import UIKit
class CustomFactory : DependencyFactory {
func application() -> CustomApplication {
return shared(CustomApplication()) { instance in
instance.factory = self
}
}
func mainWindow() -> UIWindow {
return shared(
factory: {
let instance = UIWindow(frame: UIScreen.mainScreen().bounds)
instance.backgroundColor = UIColor.whiteColor()
return instance
},
configure: { instance in
instance.rootViewController = self.rootViewController()
}
)
}
func rootViewController() -> UIViewController {
return scoped(UITabBarController()) { instance in
instance.viewControllers = [
self.tab0ViewController(),
self.tab1ViewController(),
]
}
}
...
}
class CustomApplication {
var factory: CustomFactory!
func launch() {
factory.mainWindow().makeKeyAndVisible()
}
}
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var factory: CustomFactory!
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
factory = CustomFactory()
factory.application().launch()
return true
}
}