如何访问已激活 plist 的程序集?

How do I access the assembly that is plist activated?

我正在转换一个项目以使用 Typhoon 的 plist 集成。我可以看到我添加到 TyphoonInitialAssemblies 键的程序集正在被激活,但是之后我不知道如何访问激活的程序集。

您可以通过注入 it/them 来访问程序集。您可以为 App Delegate 定义一个特例定义,如 shown in the Typhoon example application:

- (PFAppDelegate *)appDelegate
{
return [TyphoonDefinition withClass:[PFAppDelegate class]     
    configuration:^(TyphoonDefinition *definition)
    {
        //Inject the assembly
        [definition injectProperty:@selector(assembly)
            with:self];

        //Inject other properties
        [definition injectProperty:@selector(window)
            with:[self mainWindow]];
        [definition injectProperty:@selector(cityDao) 
            with:[_coreComponents cityDao]];            
    }];
}

。 .或者您也可以将程序集注入到任何其他 Typhoon 创建的组件中。这对于使用 factory pattern 从一个对象图转到另一个对象图非常有用。

  • 请注意,对于 App Delegate(或在 Typhoon 之外创建的其他对象),属性 和方法注入可以正常工作,但当然不支持初始化程序注入。此外,您不能缩小对象的范围,也就是说,在声明为原型的 Typhoon 之外创建的单例将仍然是单例。
  • 另请注意,如果您愿意,可以使用协议支持您的程序集,这样就没有必要将您的 类 直接耦合到 Typhoon。

通过 plist 集成引导的程序集也是绑定到您的 initial/main 故事板的程序集,因此在您的故事板创建的视图控制器上定义的任何 auto-injection 属性都将得到满足。这包括程序集类型 属性,例如:

@property(nonatomic, strong) InjectedClass(MyAssembly) assembly; 

this feature is here 的文档。