Я пытаюсь создать и/или создать переменную, основанную на указанном родовом типе. Я понимаю, что стирание стилей не выполняется быстро, но не похоже, что дженерики сохраняют тип, отличный от заданных условий общего типа, например. в соответствии с базовым классом. Кажется, что все, что я могу сделать или инициализировать, - это базовый класс. Что еще более странно, когда я в отладчике, у генерала появляется RawPointer для правильного класса, и даже переменные выглядят так, как будто они имеют правильный тип:
EDIT:
Как и в Xcode 6.1, это все еще проблема (упрощенный код предоставлен Грегори Хигли):
class BaseClass {
func printme() -> Void {
println("I am BaseClass")
}
}
class DerivedClass : BaseClass {
override func printme() -> Void {
println("I am DerivedClass")
}
}
class Util<T: BaseClass> {
func doSomething() {
var instance = T()
instance.printme()
}
}
var util = Util<DerivedClass>()
util.doSomething()
Печатает "I'm BaseClass"
Также хотелось бы отметить, что требуемый init {} в базовом классе больше не работает.