アプリケーションが起動すると、他の依存関係を構成するために必要な情報 (URL など) を含むリモート構成ファイルをフェッチします。
リモート構成をフェッチした後、Config
他の に提供する必要があるオブジェクトがありますTyphoonDefinition
。
現在、plist ストーリーボード統合も使用しています。
私は元々、Config オブジェクトをロードする ViewController にアセンブリを挿入するという道をたどっていました。リモート構成を受け取って Config オブジェクトを作成すると、アセンブリのプロパティとして何らかの方法で設定していました。定義でプロパティを使用できることを期待してこれを行いましたが、これは機能せず、次のようになりました。
2014-10-22 21:18:06.203 four[39840:516543] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'No component matching id 'setConfig:'.'
*** First throw call stack:
(
0 CoreFoundation 0x000000010a3e63f5 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000010a07fbb7 objc_exception_throw + 45
2 CoreFoundation 0x000000010a3e632d +[NSException raise:format:] + 205
3 four 0x00000001070a011d -[TyphoonComponentFactory componentForKey:args:] + 148
4 CoreFoundation 0x000000010a2de22c __invoking___ + 140
5 CoreFoundation 0x000000010a2de082 -[NSInvocation invoke] + 290
6 CoreFoundation 0x000000010a36d456 -[NSInvocation invokeWithTarget:] + 54
7 four 0x000000010709d358 -[TyphoonBlockComponentFactory forwardInvocation:] + 276
実行時にオブジェクトをアセンブリに挿入する方法はありますか?
私がやろうとしていることを行うためのよりクリーンな方法はありますか?
私が必要としているように聞こえるランタイム引数について読んでいましたが、ドキュメントを本当に理解していません。
たとえば、私はこれを定義として持っています。ランタイム Config オブジェクトをパラメーターとしてコンストラクターに渡す必要があります。
- (id<ApiService>)apiService
{
return [TyphoonDefinition withClass:[ApiService class] configuration:^(TyphoonDefinition* definition) {}];
}