台风:故事板创建的视图控制器中的连线循环依赖

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 之外实例化但随后注入的对象参与作用域池,因此循环依赖按预期工作。