当我的应用程序启动时,我会获取一个远程配置文件,其中包含配置其他依赖项所需的信息(URL 等)。
获取远程配置后,我有一个Config
需要提供给其他TyphoonDefinition
s 的对象。
现在我也在使用 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) {}];
}