相关疑难解决方法(0)

Swift泛型不保留类型

我正在尝试基于指定的泛型类型转换和/或生成变量.我知道swift中没有类型擦除,但它似乎不是泛型保留类型,而不是通用的指定条件,例如符合基类.似乎所有我可以投射或初始化的是基类.更奇怪的是,当我在调试器中时,泛型似乎有一个RawPointer到正确的类,甚至变量看起来像他们是正确的类型:

编辑:

从Xcode 6.1开始,这仍然是个问题(简化代码由Gregory Higley提供):

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()
Run Code Online (Sandbox Code Playgroud)

仍打印出"我是BaseClass"

还要注意基类中所需的init {}不再有效.

在此输入图像描述

generics swift xcode6

17
推荐指数
2
解决办法
2955
查看次数

标签 统计

generics ×1

swift ×1

xcode6 ×1