swift通用覆盖函数 class基类:NSObject,可打印,可均衡{ func fromJson(json:[字符串:AnyObject]){ } } 类子类:基类{ func fromJson(json:[字符串:AnyObject]){ } } func somefunc(json:[字符串:AnyObject],success:(([T])->Void)?){ 设t=t() t、 fromJson(json) } somefunc(json,{(t:SubClass)->中的Void })

swift通用覆盖函数 class基类:NSObject,可打印,可均衡{ func fromJson(json:[字符串:AnyObject]){ } } 类子类:基类{ func fromJson(json:[字符串:AnyObject]){ } } func somefunc(json:[字符串:AnyObject],success:(([T])->Void)?){ 设t=t() t、 fromJson(json) } somefunc(json,{(t:SubClass)->中的Void }),swift,generics,Swift,Generics,子类的fromJson没有被调用 我做错什么了吗? 或者这只是swift的通用性 更新 对我有用在我看来像个虫子T应为子类的类型,但不是 您肯定发现了编译器错误。试图复制一个精简版本…本质上,这是一个复制品。您需要在基类中重写required init(){}。并且,如果您使用的是Xcode 6.1或6.2,您还需要(T.self as T.Type)()而不是T()。Swift开发团队确认这是一个bug(还要注意,未优化和优化的构建之间会有不同的行为)。 class BaseClass: NS

子类的fromJson没有被调用

我做错什么了吗? 或者这只是swift的通用性

更新
对我有用

在我看来像个虫子
T
应为
子类的类型,但不是


您肯定发现了编译器错误。试图复制一个精简版本…本质上,这是一个复制品。您需要在
基类中
重写required init(){}
。并且,如果您使用的是Xcode 6.1或6.2,您还需要
(T.self as T.Type)(
)而不是
T()
。Swift开发团队确认这是一个bug(还要注意,未优化和优化的构建之间会有不同的行为)。
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 
})