上記の例で、 と を同じインスタンスにしたい場合self.customObj
はtemp3
、 または のいずれかが必要TyphoonScopeSingleton
ですTyphoonScopeWeakSingleton
。
解決中に2 つのインスタンスが という別のコンポーネントに依存していると宣言すると、TyphoonScopeObjectGraph
の同じ共有インスタンスが返されます。ただし、これらは Typhoon によって保持されません。そのため、オブジェクト グラフ全体 (たとえば、ビュー コントローラーと依存関係) を読み込み、完了したらそれを破棄することができます。また、コントローラーを指すデリゲート プロパティを持つ、コントローラーやビューなどの循環依存関係を持つ場合にも役立ちます。context
context
TyphoonScopeObjectGraph
例を挙げて説明すると役に立ちます:
@interface MyViewController : UIViewController
@property(nonatomic, strong, readonly) InjectedClass(ShoppingCart) cart;
@property(nonatomic, strong) InjectedClass(MyView) view;
@end
@interface MyView : UIViewController
@property(nonatomic, strong, readonly) InjectedClass(ShoppingCart) cart;
@end
//ShoppingCart has object-graph scope
@interface ShoppingCart
@end
ここで Typhoon に のインスタンスを与えるように依頼すると、 との両方が の同じインスタンスを持つMyViewController
コントローラーが返されます。MyViewController
MyView
ShoppingCart
- TyphoonScopePrototype が使用された場合、それぞれに異なるインスタンスが含まれます。
ShoppingCart
- TyphoonScopeSingleton が使用された場合、それぞれが同じショッピング カートのインスタンスを持つことになりますが、メモリを解放する方法はありません。
. . そのためTyphoonScopeObjectGraph
、共有インスタンスを含むオブジェクト グラフが読み込まれますが、ユース ケースの後でそのオブジェクト グラフ全体を破棄できます。