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

Provide concrete type for Generic Protocol implementation

是否可以执行以下操作:

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

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

应该没问题。您拥有的代码的唯一问题是 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
}