0

我正在从 TyphoonStoryboard 加载视图控制器,并且有一个可以正常工作的类的定义,注入了几个属性没有问题。然而,其中一个属性是一个视图,它本身有一个委托属性,我想成为视图控制器实例。当视图设置委托属性时,它会尝试创建视图控制器的新实例,而不是使用情节提要创建的实例。如何使委托属性使用视图控制器的当前实例?我的定义如下所示:

- (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 除了实例化一个新的之外别无选择?

4

1 回答 1

0

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

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

于 2015-01-16T14:54:49.833 回答