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

时间:2015-01-16 14:47:21

标签: ios uistoryboard typhoon

我正在从TyphoonStoryboard加载视图控制器,并且该类的定义工作正常,注入了几个属性没有问题。但是其中一个属性是一个视图,它本身有一个委托属性,我想成为视图控制器实例。当视图设置委托属性时,它会尝试创建视图控制器的新实例,而不是使用故事板创建的实例。如何使delegate属性使用视图控制器的当前实例?我的定义看起来像这样:

- (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别无选择,只能实例化一个新的?

1 个答案:

答案 0 :(得分:0)

在Typhoon 2.3.4之前不支持此功能。在此版本之前,在Typhoon之外创建的对象不参与范围池。因此,无法使用Typhoon将delegate连接到viewController,但您可以在Interface Builder中连接或使用performAfterInjections回调。

从2.3.4开始,在Typhoon之外实例化但随后注入的对象参与范围池,因此循环依赖关系按预期工作。