0

所以我不必编写太多代码来复制我的错误——在这种情况下我可能应该使用泛型,但感觉我的解决方案应该可以工作。所以下面的代码块给了我一个“类型 DCServiceClient 不符合协议 DMServiceClient”:

protocol DMServiceEndpoint { }
protocol DCServiceEndpoint: DMServiceEndpoint { }

protocol DMServiceClient {
    typealias Endpoint: DMServiceEndpoint
}

class DCServiceClient: DMServiceClient {
    typealias Endpoint = DCServiceEndpoint
}

但是,如果我删除对关联类型(端点)的约束,它编译时不会出现任何问题。因为 DCServiceEndpoint 符合约束 (DMServiceEndpoint),所以它似乎应该编译。关于我在这里缺少什么的任何想法?多谢你们!

4

1 回答 1

1
protocol DMServiceEndpoint { }
protocol DCServiceEndpoint: DMServiceEndpoint { }

protocol DMServiceClient {
    typealias Endpoint: DMServiceEndpoint
}
class DCServiceClient: DMServiceClient {
    typealias Endpoint = newClass // implementation a class conforms to  EndPoint
}
// add new class conforms to DMServiceEndpoint
class newClass: DCServiceEndpoint {}
于 2016-01-21T02:13:22.513 回答