炽热熔炉 (Fiery Crucible)

一个极简的类型安全 Swift 依赖注入工厂。所有真正的实例都在这里铸造。

Carthage compatible

更新日志 (Changelog)

版本 3.0.2
版本 3.0.1
版本 3.0.0
版本 2.1.3
版本 2.1.2
版本 2.1.1
版本 2.1.0
版本 2.0.4
版本 2.0.3
版本 2.0.2
版本 2.0.0
版本 1.3.3
版本 1.3.2
版本 1.3.1
版本 1.3.0
版本 1.2.0

特性 (Features)

循环依赖 (Circular Dependencies)

循环引用仅通过使用 setter 注入来处理。这是因为所有实例都在构造阶段创建,然后才触发 setter 注入,从而允许在需要它们之前引用存在。

如何使用 (How to use)

你可以将源代码复制到你的项目中,或者设置此 repo 的 git 子模块并将项目作为子项目拖到你的项目中。

代码示例 (A code example)

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
    }
}