我正在尝试构建一个拥有包含泛型类型对象的数组的类。到目前为止我没有成功。这就是我在做的事情:
class GenericTest<T>: NSObject {
var objects = T[]()
}
var buffer = GenericTest<String>()
当我执行此操作时,程序编译,预运行时出现分段错误。如果我没有概括,那么一切都会毫无问题地编译
class NonGenericTest: NSObject {
var objects = String[]()
}
var buffer = NonGenericTest()
这不是我想采取的方法,因为我必须为各种类型解决这个问题。任何想法为什么会破裂?
答案 0 :(得分:3)
出于某种原因,在Swift中使用泛型类时,继承自NSObject
并不是一个好主意。
我会说,除非你绝对必须,否则不要在任何 Swift类中这样做。如果您需要Obj-C兼容性,请使用@objc
前缀(以及将从Obj-C调用的任何方法)标记您的类。
傻但是......是的:
@objc class MyGeneric<T>
{
var array = T[]()
}
var buffer = MyGeneric<String>()
您可以使用基础类,例如NSString
,NSDictionary
以及您想要的任何其他类型作为泛型类型参数,但我建议不要在泛型类定义中继承NSObject
。