typhoonDidInject
コールバックメソッドの使用をお勧めします
typhoonDidInject() -> Void {
myObject.delegate = self;
}
または、Typhoon に直接結合したくない場合は、アセンブリでカスタムのものを指定します。
definition.performAfterInjections("someMethod")
このすべてをアセンブリに配線するためのより適切な方法は思いつきませんが、どのように見えるべきかについて提案をしたい場合は、それを実装できます。
編集:
すべてを Typhoon と結び付けたい場合は、次のようなものを提供できます。
- (UIViewController *)someViewController
{
return [TyphoonDefinition withClass:[FoobarViewController class]
configuration:^(TyphoonDefinition *definition) {
[definition injectProperty:@selector(machine)
with:[self spaghettiMachine]];
[definition performAfterInjections:@selector(injectSpaghettiMachine:with:)
parameters:^(TyphoonMethod *method) {
[method injectParameterWith:[self spaghettiMachine]];
//This will be the same object for any scope except 'Prototype'
[method injectParameterWith:[self someViewController]];
}];
}];
}
- (SpaghettiMachine *)spaghettiMachine
{
return [TyphoonDefinition withClass:[SpaghettiMachine class]
configuration:^(TyphoonDefinition *definition) {
definition.scope = TyphoonScopeWeakSingleton;
}];
}
ただし、これには、各View Controllerが次のようなメソッドを実装する必要があります。
- (void)injectSpaghettiMachine:(SpaghettiMachine *)machine
with:(id)delegate
{
machine.delegate = self;
}
. . 上記は、コントローラーに共通の基本クラスがある場合に役立つ場合があります。