在使用台风自动注入模式时,我遇到了单例对象很少有实例的问题。
在我的示例中,有 2 个视图控制器,它们有自己的模型,并且这个模型应该使用第三个模型的单例实例。我正在开发基于故事板的应用程序,但没有与台风集成故事板,但与plist 集成。
这是我的汇编文件:
#pragma mark - Singletons
- (id<AccountManager>)accountManager {
return [TyphoonDefinition withClass:[AccountManagerImpl class] configuration:^(TyphoonDefinition *definition) {
definition.scope = TyphoonScopeSingleton;
}];
}
#pragma mark - ViewController Models
- (VideoListModel *)childVideoListModel {
return [TyphoonDefinition withClass:[VideoListModel class] configuration:^(TyphoonDefinition *definition) {
[definition useInitializer:@selector(initWithAccountManager:)
parameters:^(TyphoonMethod *initializer) {
[initializer injectParameterWith:[self accountManager]];
}];
}];
}
- (LoginModel *)loginModel {
return [TyphoonDefinition withClass:[LoginModel class] configuration:^(TyphoonDefinition *definition) {
[definition useInitializer:@selector(initWithAccountManager:)
parameters:^(TyphoonMethod *initializer) {
[initializer injectParameterWith:[self accountManager]];
}];
}];
}
在我的 viewControllers 中,我使用自动注入获得模型:
@property (nonatomic, strong) InjectedClass(VideoListModel) model;
和另一个 viewController 一样。当我从 VideoListModel 和 LoginModel 访问 accountManager 时,它有不同的实例。
我做错了什么?或者我可能错过了台风配置中的一些东西?
UPD:实际上,当我使用自动注入时,它会从 ModelsAssembly 的不同实例中注入模型。