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 に答える