У меня есть следующая ситуация: реальный код намного больше, но это дает приятную сумму ситуации. (Если вы хотите знать, использование этого иметь динамически загружен UICollectionView):Swift: родительский класс возвращает родительские свойства класса
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
возвращается " А». Я проверил в отладчик и функция выполняется правильно, тип, возвращаемый С2 В.
Я использую XCode 7.3 с Swift 2.2
Хорошо, получилось, я просто реализую необходимые методы в классе ребенка, спасибо! – whtman