2

Typhoon の plist 統合を使用するようにプロジェクトを移行しています。キーに追加したアセンブリTyphoonInitialAssembliesがアクティブ化されていることがわかりますが、アクティブ化されたアセンブリにアクセスする方法がわかりません。

4

1 に答える 1

1

アセンブリを注入することでアセンブリにアクセスできます。Typhoon サンプル アプリケーションに示すように、App Delegate の特別なケース定義を定義できます。

- (PFAppDelegate *)appDelegate
{
return [TyphoonDefinition withClass:[PFAppDelegate class]     
    configuration:^(TyphoonDefinition *definition)
    {
        //Inject the assembly
        [definition injectProperty:@selector(assembly)
            with:self];

        //Inject other properties
        [definition injectProperty:@selector(window)
            with:[self mainWindow]];
        [definition injectProperty:@selector(cityDao) 
            with:[_coreComponents cityDao]];            
    }];
}

. . または、アセンブリを Typhoon で作成された他のコンポーネントに挿入することもできます。これは、ファクトリ パターンを使用して、あるオブジェクト グラフから別のオブジェクト グラフに進む場合に役立ちます。

  • App Delegate (または Typhoon の外部で作成された他のオブジェクト) の場合、プロパティとメソッドの注入は正常に機能しますが、初期化子の注入はもちろんサポートされていません。また、オブジェクトをダウンスコープすることはできません。つまり、プロトタイプとして宣言された Typhoon の外部で作成されたシングルトンは、シングルトンのままになります。
  • また、必要に応じて、クラスを Typhoon に直接結合する必要がないように、アセンブリをプロトコルでバックアップできることにも注意してください。

plist 統合によってブートストラップされたアセンブリは、初期/メイン ストーリーボードにバインドされているアセンブリでもあるため、ストーリーボードで作成されたビュー コントローラーで定義された自動注入プロパティが満たされます。これには、次のようなアセンブリ タイプ プロパティが含まれます。

@property(nonatomic, strong) InjectedClass(MyAssembly) assembly; 

この機能のドキュメントはこちらです。

于 2015-03-04T09:15:07.143 に答える