【发布时间】:2015-03-24 18:22:26
【问题描述】:
class BaseClass: NSObject, Printable, Equatable {
func fromJson(json: [String: AnyObject]) {
}
}
class SubClass: BaseClass{
func fromJson(json: [String: AnyObject]) {
}
}
func somefunc<T: BaseClass>(json: [String: AnyObject], success: (([T]) -> Void)?) {
let t = T()
t.fromJson(json)
}
somefunc(json, { (t: SubClass) -> Void in
})
SubClass 的 fromJson 没有被调用?
我做错了吗? 还是 swift 中的通用性如何?
【问题讨论】:
-
很确定你发现了一个编译器错误。试图重现缩减版...
-
本质上,这是stackoverflow.com/q/26280176/3804019的骗子。你需要
override required init() { }inBaseClass。 -
而且,如果您使用的是 Xcode 6.1 或 6.2,您还需要
(T.self as T.Type)()而不是T()。 -
已被 Swift 开发团队确认为一个错误(还要注意,未优化和优化的构建之间会出现不同的行为)。