我正在使用typhoon与plist集成。在一个程序集中,我需要创建一个具有如下初始化器的实例:@selector(initWithBundleURL:moduleProvider:launchOptions:)第二个参数moduleProvider:接受一个块,该块返回一个对象数组。我想使用typhoon来注入该数组中的每个对象。
- (RCTBridge *)bridgeWithModule1:(Module1 *)module1 module2:(Module2 *)module2 {
return [TyphoonDefinition withClass:[RCTBridge class] configuration:^(TyphoonDefinition *definition) {
[definition useInitializer:@selector(initWithBundleURL:moduleProvider:launchOptions:) parameters:^(TyphoonMethod *initializer) {
[initializer injectParameterWith:url];
RCTBridgeModuleProviderBlock block = ^NSArray *() {
return @[module1, module2];
};
[initializer injectParameterWith:block];
[initializer injectParameterWith:nil];
}];
definition.scope = TyphoonScopeLazySingleton;
}];
}上面的代码不起作用。因为module1和module2在运行时是TyphoonDefinition,而不是真正的实例。有没有办法使用typhoon注入真实实例?
发布于 2015-11-11 06:27:04
使用Typhoon,您可以使用具有run-time arguments的程序集接口来混合静态和运行时依赖项。这避免了创建自定义工厂类的样板。然而,because of the way Typhoon works你不能修改定义中的运行时参数。
如果需要这样做,请创建自定义工厂类。
https://stackoverflow.com/questions/33634649
复制相似问题