访问程序集的子程序集将生成 EXC_BAD_ACCESS

Accessing sub assembly of an assembly will generate EXC_BAD_ACCESS

用例:

我有一个 ApplicationAssembly。该程序集有一个 属性 类型为 TyphoonAssembly 的 CoreAssembly。我正在使用 PLIST 集成并注册了两个程序集。我正在将 ApplicationAssembly 注入 Appdelegate。

在 ViewController 之后,我想获得一个将由 CoreAssembly 生成的对象

    var appdelegate = UIApplication.sharedApplication().delegate as!  AppDelegate;
  tagHandler = appdelegate.assembly.coreAssembly.tagHandler() as! GoogleTagsHandler;

如果我这样做,我会得到一个 EXC_BAD_ACCESS

这似乎是一个错误,我们已经 logged it。同时,作为解决方法,请将 ApplicationAssembly 和 CoreAssembly 注入您的应用委托,如下所示:

public dynamic func appDelegate() -> AnyObject {
    return TyphoonDefinition.withClass(AppDelegate.self) {
        (definition) in

        definition.injectProperty("assembly", with: self)
        definition.injectProperty("coreAssembly", with: self)
    }
}