首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >App不使用Typhoon进入初始ViewController

App不使用Typhoon进入初始ViewController
EN

Stack Overflow用户
提问于 2015-04-17 16:34:58
回答 1查看 176关注 0票数 1

我创建了一个测试Typhoon框架的项目,我创建了两个类ApplicationAssemblyCoreAssembly,其中我注入了一些属性和构造函数以及一个默认的Configuration.plist来从其中加载数据。

ApplicationAssembly

代码语言:javascript
复制
public class ApplicationAssembly: TyphoonAssembly { 

    public dynamic func config() -> AnyObject {
       return TyphoonDefinition.configDefinitionWithName("Config.plist")
    } 
}

CoreAssembly

代码语言:javascript
复制
public class CoreAssembly: TyphoonAssembly {

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

           definition.useInitializer("initWithDebugging:debugProcess:mainURL:") {
              (initializer) in

               initializer.injectParameterWith(TyphoonConfig("debug_mode"))
               initializer.injectParameterWith(TyphoonConfig("debug_path"))
               initializer.injectParameterWith(TyphoonConfig("api_url"))                
           }
           definition.scope = TyphoonScope.Singleton
       }
    }    

    public dynamic func viewController() -> AnyObject {

       return TyphoonDefinition.withClass(ViewController.self) {
           (definition) in

           definition.injectProperty("apiHandler", with:self.apiHandler())
       }
    }   
}

我在我的Info.plist中设置了TyphoonInitialAssemblies,首先是ApplicationAssembly,然后是CoreAssembly

除了应用程序从未在AppDelegate类中输入或在ViewController类中输入之外,一切都运行良好,没有例外。我不知道,也许我在医生身上漏掉了什么。

我在这里错过了什么?

为什么在调试中不进入ViewController类,这是Storyboard中的初始视图控制器?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-22 10:18:46

问题是ApiHandler类没有扩展NSObject,这是必需的。这是因为Typhoon是一个内省依赖注入容器。由于Swift没有自省,所以它使用了目标C运行时。

然而,应用程序不应该以这样一种模糊的方式崩溃。我要让开了个问题看看如何在有意义的错误中失败,而不是无限递归。

在解决了最初的问题后,我还注意到用于ApiHandler的init方法传递一个Swift对象。这需要是一个NSNumber。

代码语言:javascript
复制
init(debugging : NSNumber, debugProcess : String, mainURL : String) {
    self.debugging = debugging.boolValue
    self.debugProcess = debugProcess
    self.mainURL = mainURL                
}

鉴于Typhoon使用的是目标-C运行时,与Swift一起使用它有几个怪癖--与使用Swift与KVO应用相同的规则。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29704835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档