Впрыскивание синглетонов с использованием тайфуна, дающего несколько экземпляров
У меня есть сборка следующим образом, и это начнется с plist
@implementation classAAssembly
- (id)classA {
return [TyphoonDefinition withClass:[classA class] configuration:^(TyphoonDefinition *definition) {
definition.scope = TyphoonScopeSingleton;
}];
}
при загрузке приложения это создает экземпляр и внедряется в соответствующие места
тогда у меня есть некоторые статические методы должны использовать это, поэтому я попытался, как показано ниже
+ (void)staticMethod {
classAAssembly *assembly = [[classAAssembly new] activate];
classA *classA = [assembly classA];
}
Проблема в том, что когда я делаю это, это дает новый экземпляр, то, что я ожидаю, это тот же экземпляр, который создается при загрузке приложения.
любая помощь будет оценена.
1 ответ
Вы создаете новую сборку выше. Что вам нужно сделать, так это получить дескриптор того, который был создан с использованием интеграции plist. Так, например, чтобы получить доступ к сборке из вашего делегата приложения, вставьте ее в нее.
Чтобы получить доступ к сборке из статического метода, вам нужно создать статический указатель на нее:
- (void) typhoonDidInject {
myStaticAssembly = this.assembly
}