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

时间:2015-03-04 05:51:52

标签: ios objective-c typhoon

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

1 个答案:

答案 0 :(得分:1)

您可以通过注入/它们来访问程序集。您可以为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集成引导的程序集也是绑定到初始/主要故事板的程序集,因此将在故事板创建的视图控制器上定义的任何auto-injection属性都将得到满足。这包括程序集类型属性,例如:

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

this feature is here的文档。