makeDefault方法仅用于将 Typhoon 集成到遗留代码中 - 不受 Typhoon 管理的类。我们现在不鼓励在其他地方使用它,因为它会产生对 Typhoon 的紧密依赖,这可能会导致这类问题。要模拟它,你需要调酒。
一个对象图加载另一个对象图是很常见的——例如从一个视图控制器(具有注入的依赖项)转换到另一个。从 Typhoon 中查找依赖项的更好方法是将组件工厂作为依赖项注入。这可以通过以下方式完成:
Ex1:使用属性注入注入程序集
- (id)loyaltyManagementController
{
return [TyphoonDefinition withClass:[LoyaltyManagementViewController class]
properties:^(TyphoonDefinition* definition)
{
definition.scope = TyphoonScopePrototype;
//Inject the TyphoonComponentFactory posing as an assembly
[definition injectProperty:@selector(assembly)];
}];
}
. . 如果您遵循这种方法,您的所有测试都可以在不调用makeDefault的情况下实例化它们自己的工厂、修补程序、覆盖组件等。
卸载单例
顺便说一句,您可以通过调用 TyphoonComponentFactory 的 unload 方法来卸载单例范围的组件,但在正常使用情况下不需要这样做。
更新:
以上所有内容仍然适用,除了我们现在已经多次移动了设置默认工厂的限制。这现在只是发出警告。