为通用协议实现提供具体类型

时间:2016-03-17 11:31:39

标签: swift oop swift2 swift-protocols

是否可以执行以下操作:

protocol A: class {
    typealias T: AnyObject
}
extension A {
    func testA(a:Self, _ t:T)->Void{
        print(a, t)
    }
}
class B:A {
    typealias T = String
}

换句话说,我有协议,并希望在符合它的类中提供具体类型。

1 个答案:

答案 0 :(得分:0)

那应该没问题。您所拥有的代码唯一的问题是String不是AnyObject

你只需要:

protocol A: class {
    typealias T
}
extension A {
    func testA(a:Self, _ t:T)->Void{
        print(a, t)
    }
}
class B:A {
    typealias T = String
}