无法在Swift语言中实例化Generic类型的数组

时间:2014-06-10 21:21:02

标签: swift

我正在尝试构建一个拥有包含泛型类型对象的数组的类。到目前为止我没有成功。这就是我在做的事情:

class GenericTest<T>: NSObject {
    var objects = T[]()
}

var buffer = GenericTest<String>()

当我执行此操作时,程序编译,预运行时出现分段错误。如果我没有概括,那么一切都会毫无问题地编译

class NonGenericTest: NSObject {
    var objects = String[]()
}

var buffer = NonGenericTest()

这不是我想采取的方法,因为我必须为各种类型解决这个问题。任何想法为什么会破裂?

1 个答案:

答案 0 :(得分:3)

出于某种原因,在Swift中使用泛型类时,继承自NSObject并不是一个好主意。 我会说,除非你绝对必须,否则不要在任何 Swift类中这样做。如果您需要Obj-C兼容性,请使用@objc前缀(以及将从Obj-C调用的任何方法)标记您的类。

傻但是......是的:

@objc class MyGeneric<T>
{
    var array = T[]()
}

var buffer = MyGeneric<String>()

您可以使用基础类,例如NSStringNSDictionary以及您想要的任何其他类型作为泛型类型参数,但我建议不要在泛型类定义中继承NSObject