Typhoon 的一个很好的特性是能够将您的程序集用作混合静态和运行时依赖项的工厂接口,从而避免创建自定义工厂的样板。此功能称为运行时参数。但是,由于 Storyboards 被用于发出视图控制器,因此无法使用:
- 运行时参数,因为故事板界面没有这个概念。
- 初始化程序注入,作为从情节提要发出的 VC 使用
initWithCoder
您可以做的其他事情是在您的程序集中创建一个具有范围的可变模型对象TyphoonScopeWeakSingleton
- (Person *)storyboardModel
{
return [TyphoonDefinition withClass:[Person class]
configuration:^(TyphoonDefinition *definition) {
definition.scope = TyphoonScopeWeakSingleton;
}];
}
然后,您可以将其注入顶视图控制器,以及此堆栈上的任何后续子项。当这个堆栈最终被弹出时,模型对象也将被清理。
由于 Storyboard 创建的视图控制器仅适用于属性依赖项,您可能希望将此方法与 Typhoon 的(仍然是私有的,但在 master 上可用)自动连接宏一起使用。这节省了创建装配注册和布线规则的时间:
@interface INFWelcomeController : UIViewController <INFWelcomeViewDelegate>
@property (nonatomic, strong) InjectedClass(Person) model;
@property (nonatomic, strong) InjectedProtocol(WebClient) client;
@end
自动装配也可用于集成测试用例。