小编ere*_*iox的帖子

使用NSObject继承对Swift通用类进行子类化

我遇到了一个错误,我不确定它是否是Swift语言或bug的限制.这是最基本的前提:

class GenericClass<T> : NSObject {

    var inputValue: T

    init(value: T) {
        self.inputValue = value
        super.init()
    }
}

class SubClass : GenericClass<String> {

    override init(value: String) {
        super.init(value: value)
        }

  }

var test = GenericClass(value: "test") //Succeeds
var test2 = SubClass(value: "test2") //Fails with EXC_BAD_ACCESS
Run Code Online (Sandbox Code Playgroud)

我这里没有编译器警告,但是Subclass拒绝实例化.我在子类化泛型的特定上下文中有一个更复杂的目标,但上面这个基本问题是我把它归结为.

有趣的是,如果我删除GenericClass上的NSObject继承(和泛型的init方法中的super.init()),这个设置没有问题,所以我认为它必须与我的事实有关继承自NSObject.我的完整实现必须继承自NSOperation(我基本上是使用泛型超类生成自定义的NSOperation类),所以从NSObject继承(即NSOperation)对我来说不是可选的.

令人讨厌的是没有编译器错误,我得到的东西和EXC_BAD_ACCESS一样令人讨厌.这让我觉得这可能是有用的,但目前还不行.我知道他们最近才开始支持Swift中泛型类的子类化.我正在运行最新的xCode beta 6.

有任何见解赞赏!

generics xcode exc-bad-access nsobject swift

9
推荐指数
1
解决办法
1735
查看次数

标签 统计

exc-bad-access ×1

generics ×1

nsobject ×1

swift ×1

xcode ×1