我有一个A级注射在几个地方。我想在任何地方注入相同的A实例 - 类似于单身但注射。
是否有可能用Typhoon
做到这一点答案 0 :(得分:2)
Typhoon有三个可用于此的范围,TyphoonScopeSingleton,TyphoonScopeLazySingleton和TyphoonScopeWeakSingleton。
设置组件的范围:
- (PFRootViewController *)rootViewController
{
definition.scope = TyphoonScopeSingleton;
}
使用此范围可以提供单例的所有优点,而DI模式可以避免这些缺点。
有关台风示波器的更多信息:
其他语言的许多DI容器的默认范围为 singleton ,而在Typhoon中,默认范围为TyphoonScopeObjectGraph
。具有默认的单例范围对于服务器环境是有意义的,其中应用程序可以在给定时间为任何用例提供服务。
与此同时,Typhoon针对移动和桌面环境,因此对象图范围旨在将程序集加载到内存(视图控制器示例)中,然后在继续使用另一个用例后将其丢弃。将共享任何共享引用,例如指向父代(例如委托)的循环依赖项。
当然,虽然这是默认值,但有些情况需要其他范围。更多信息可以在scopes section of the user guide中找到。