1
私は以下のような状況がありますが、実際のコードはこれ以上ですが、これは状況の良い和を提供します。 (あなたがこれを使用することを不思議に思っている動的UICollectionViewをロードされているのであれば):スウィフト:子クラスは親クラスのプロパティを返します
protocol P {
static var name: String {get}
}
extension P {
static var name: String {
return String(Self)
}
}
protocol P2 {
getType() -> P.Type
getName() -> String
}
class A: P {
}
class B: A {
}
class C1: P2 {
func getType() -> P.Type {
return A.self
}
func getName() -> String {
return A.name
}
}
class C2: P2 {
func getType() -> P.Type {
return B.self
}
func getName() -> String {
return B.name
}
}
今何が起こっているか、次のとおりです。
C1.getType().name //"A" as expected
C1.getName() //"A" as expected
C2.getType().name //"A" why?
C2.getName() //"B" as expected
私はなぜC2.getType.name
戻り、「任意の手掛かりを持っていませんA "である。私は、デバッガで確認し、機能が正しく実行され、C2によって返される型はB.
である私は、プロトコルの拡張機能が多型ではないためにですスウィフト2.2
これで、子クラスに必要なメソッドを実装するだけです。ありがとう! – whtman