いくつかの場所に注入されたクラス A があります。A の同じインスタンスをどこにでも注入したいと思います-シングルトンのようなものですが、注入します。
Typhoonでそれを行うことは可能ですか?
いくつかの場所に注入されたクラス A があります。A の同じインスタンスをどこにでも注入したいと思います-シングルトンのようなものですが、注入します。
Typhoonでそれを行うことは可能ですか?
Typhoon には、これに使用できる 3 つのスコープ、TyphoonScopeSingleton、TyphoonScopeLazySingleton、およびTyphoonScopeWeakSingletonがあります。
コンポーネントのスコープを設定するには:
- (PFRootViewController *)rootViewController
{
definition.scope = TyphoonScopeSingleton;
}
このスコープを使用すると、シングルトンのすべての利点が得られますが、DI パターンでは欠点が回避されます。
台風スコープの詳細:
他の言語の多くの DI コンテナーはデフォルトのスコープがsingletonですが、Typhoon のデフォルトのスコープはTyphoonScopeObjectGraph
です。シングルトンのデフォルト スコープを持つことは、アプリケーションが特定の時間にあらゆるユースケースを処理する可能性があるサーバー環境にとって意味があります。
一方、Typhoon はモバイルおよびデスクトップ環境を対象としているため、オブジェクト グラフ スコープは、アセンブリをメモリに読み込み (View Controller の例)、別のユースケースに進んだ後に破棄するように設計されています。親 (デリゲートなど) を指す循環依存関係などの共有参照はすべて共有されます。
もちろん、これがデフォルトですが、他のスコープが必要な場合もあります。詳細については、ユーザー ガイドのスコープ セクションを参照してください。