If I compare Typhoon with one of the common IOC container spring in java i could not find two important freatures in the documentation.
@autowired に注釈を付けるには? @Scope に注釈を付ける方法は? 特に SCOPE_SINGLETON と SCOPE_PROTOTYPE を区別します。
If I compare Typhoon with one of the common IOC container spring in java i could not find two important freatures in the documentation.
@autowired に注釈を付けるには? @Scope に注釈を付ける方法は? 特に SCOPE_SINGLETON と SCOPE_PROTOTYPE を区別します。
Typhoon は、プロトタイプ スコープとシングルトン スコープ、およびモバイル アプリケーションとデスクトップ アプリケーション用に特別に設計された他の 2 つのスコープをサポートしています。
サーバー側アプリケーションでは、サーバーは特定の時点でアプリケーションのユースケースのいずれかをサポートしている可能性があります。したがって、これらのコンポーネントがシングルトン スコープを持つことは理にかなっています。モバイル アプリケーションでは、バックグラウンド サービスがありますが、一度に 1 つのユース ケースにサービスを提供するのがより一般的です。また、メモリ、CPU、およびバッテリーの制約もあります。
したがって、Typhoon のデフォルトのスコープはTyphoonScopeObjectGraphです。つまり、トップレベル コントローラーなどの解決中に他のコンポーネントへの参照が共有されます。このようにして、オブジェクト グラフをロードし、完了したら破棄することができます。
次のものもあります。
自動配線マクロ vs ネイティブ スタイル アセンブリ:
残念ながら、Objective-C では、マクロを使用した "注釈" のランタイム サポートが制限されています。したがって、オプションは、いくつかの欠点があるコンパイル時のプリプロセッサを使用するか、制限を回避して風変わりなスタイルを使用することを強制することでした。私たちは、(今のところ) 構成よりも規則が優先される単純なケースにのみマクロを使用するのが最善であると判断しました。
より詳細に制御するには、ネイティブ スタイルのアセンブリを使用することを強くお勧めします。これにより、次のことが可能になります。
ネイティブ スタイルを使用してスコープを設定するには:
- (id)rootController
{
return [TyphoonDefinition withClass:[RootViewController class]
configuration:^(TyphoonDefinition* definition)
{
definition.scope = TyphoonScopeSingleton;
}];
}