【发布时间】:2016-12-06 14:05:34
【问题描述】:
我做了一个封装 Alamofire 的框架。
在我的框架中测试时(在测试目标中)我有这个代码可以正常工作。
import Foundation
@testable import NetworkManager
class MockRouter: Router {
enum APICalls {
case func1
case func2
}
var calls: APICalls!
init(calls: APICalls) {
self.calls = calls
}
}
当我将它作为框架添加到不同的项目时
import Foundation
import NetworkManager
class JokesRouter: Router {
enum APICalls {
case func1
case func2
}
var calls: APICalls!
init(calls: APICalls) {
self.calls = calls
}
}
我得到一个错误:
在从初始化程序返回之前,不会在所有路径上调用超级初始化
所以我添加了 Super.init()
init(calls: APICalls) {
super.init()
self.calls = calls
}
现在我得到了这个错误:
super.init 不能在初始化程序之外调用
知道是什么问题吗?
【问题讨论】:
-
请显示
Router实现(初始化程序)。 -
路由器中没有初始化
-
那就是问题所在。您需要一些公共初始化程序才能调用子类。
-
那么为什么它对测试目标有效?