台风:故事板创建的视图控制器中的连线循环依赖
Typhoon : wire circular dependency in storyboard created view controller
我正在从 TyphoonStoryboard 加载视图控制器并且有一个 class 的定义,它工作正常,几个属性被注入没有问题。但是,其中一个属性是一个视图,它本身有一个委托 属性,我想将其作为视图控制器实例。当视图开始设置委托 属性 时,它会尝试创建视图控制器的新实例,而不是使用故事板创建的实例。如何让委托 属性 使用视图控制器的当前实例?我的定义看起来像这样:
- (id)viewController
{
return [TyphoonDefinition withClass:[MyViewController class]
configuration:^(TyphoonDefinition *definition) {
[definition injectProperty:@selector(view) with:[self myView]];
}];
}
- (id)myView
{
return [TyphoonDefinition withClass:[MyView class]
configuration:^(TyphoonDefinition *definition) {
[definition injectProperty:@selector(delegate)
with:[self viewController]];
}];
}
据我所知,视图控制器永远不能用作引用,因为它没有在任何地方添加共享引用,而且 Typhoon 别无选择,只能实例化一个新的?
Typhoon 2.3.4 之前不支持此功能。在此版本之前,在 Typhoon 之外创建的对象不参与作用域池。因此,无法使用 Typhoon 将 delegate
连接到 viewController
,但您可以在 Interface Builder 中连接或使用 performAfterInjections
回调。
从 2.3.4 开始,在 Typhoon 之外实例化但随后注入的对象参与作用域池,因此循环依赖按预期工作。
我正在从 TyphoonStoryboard 加载视图控制器并且有一个 class 的定义,它工作正常,几个属性被注入没有问题。但是,其中一个属性是一个视图,它本身有一个委托 属性,我想将其作为视图控制器实例。当视图开始设置委托 属性 时,它会尝试创建视图控制器的新实例,而不是使用故事板创建的实例。如何让委托 属性 使用视图控制器的当前实例?我的定义看起来像这样:
- (id)viewController
{
return [TyphoonDefinition withClass:[MyViewController class]
configuration:^(TyphoonDefinition *definition) {
[definition injectProperty:@selector(view) with:[self myView]];
}];
}
- (id)myView
{
return [TyphoonDefinition withClass:[MyView class]
configuration:^(TyphoonDefinition *definition) {
[definition injectProperty:@selector(delegate)
with:[self viewController]];
}];
}
据我所知,视图控制器永远不能用作引用,因为它没有在任何地方添加共享引用,而且 Typhoon 别无选择,只能实例化一个新的?
Typhoon 2.3.4 之前不支持此功能。在此版本之前,在 Typhoon 之外创建的对象不参与作用域池。因此,无法使用 Typhoon 将 delegate
连接到 viewController
,但您可以在 Interface Builder 中连接或使用 performAfterInjections
回调。
从 2.3.4 开始,在 Typhoon 之外实例化但随后注入的对象参与作用域池,因此循环依赖按预期工作。