我在我的项目中使用了多播委托,我想将它与台风集成,因为它使用标准的一对一objective-c 委托。
至于多播委托,我使用的是 NSProxy 方法,在这里解释:http: //arielelkin.github.io/articles/objective-c-multicast-delegate/。
到目前为止我的代码:
-(AViewController*)aViewController{
return [TyphoonDefinition withClass:[AViewController class] configuration:^(TyphoonDefinition
*definition) {
}];
}
-(BViewController*)bViewController{
return [TyphoonDefinition withClass:[BViewController class] configuration:^(TyphoonDefinition
*definition) {
}];
}
-(AppController*)appController{
return [TyphoonDefinition withClass:[AppController class] configuration:^(TyphoonDefinition
*definition) {
[definition setScope:TyphoonScopeSingleton];
[definition injectProperty:@selector(delegate) with:[self appControllerMulticastDelegate]];
}];
}
-(MulticastDelegate*)appControllerMulticastDelegate{
return [TyphoonDefinition withClass:[MulticastDelegate class]
configuration:^(TyphoonDefinition *definition) {
[definition setScope:TyphoonScopeSingleton];
}];
}
是否可以将 aViewController 和 bViewController 注入 appControllerMulticastDelegation?我应该如何解决这个问题?我认为我应该使用方法注入(对于 addDelegate: MulticastDelegate 中的方法),但不知道该怎么做......
编辑 只是问。是否可以将当前定义(非单例 - TyphoonScopeObjectGraph)中的实例注入其他定义,例如(方法注入):
-(AViewController*)aViewController{
return [TyphoonDefinition withClass:[AViewController class] configuration:^(TyphoonDefinition
*definition) {
[(TyphoonDefinition*)[self appContollerMulticastDelegate] injectMethod:@selector(addDelegate:)
parameters:^(TyphoonMethod *method) {
[method injectParameterWith:/*instance of AViewController that will be created*/];
}];
}
在运行时: AViewController* aViewController = [(MyAssembly*)factory aViewController];// 创建一个新的 AViewController 唯一实例并将其添加到 appContollerMulticastDelegate 订阅者;