Exception 使用泛型的dynamicType会导致EXC\u BAD\u访问

Exception 使用泛型的dynamicType会导致EXC\u BAD\u访问,exception,generics,swift,Exception,Generics,Swift,以下代码在iOS模拟器中运行良好,但会导致设备上出现EXC_BAD_访问异常 这是斯威夫特的一只虫子还是我只是在做一些奇怪的事情 什么不起作用: class Foo: NSObject { class var name: String { return "A foo" } } struct FooWrapper<T: Foo> { var fooName: String init(foo: T) { fooName

以下代码在iOS模拟器中运行良好,但会导致设备上出现EXC_BAD_访问异常

这是斯威夫特的一只虫子还是我只是在做一些奇怪的事情

什么不起作用:

class Foo: NSObject {
    class var name: String {
        return "A foo"
    }
}

struct FooWrapper<T: Foo> {
    var fooName: String

    init(foo: T) {
        fooName = foo.dynamicType.name
    }
}

var foo = Foo()
var fooWrapper = FooWrapper(foo: foo)
println(fooWrapper.fooName)
类Foo:NSObject{
类变量名称:String{
返回“一个foo”
}
}
结构食品包装器{
变量名称:字符串
初始化(foo:T){
fooName=foo.dynamicType.name
}
}
var foo=foo()
var fooWrapper=fooWrapper(foo:foo)
println(fooWrapper.fooName)
要使其正常工作,请执行以下任一操作:

  • 使用
    (foo作为foo.dynamicType.name
  • 或者,删除NSObject作为Foo的超类

关于在同一天将动态objc类东西与泛型混合在一起时出现的奇怪行为,您知道什么?两个问题:您的代码看起来是正确的,因此可能是一个bug,除非未显示的代码有什么有趣的地方——如果您仅使用此代码创建一个全新的项目,它还会崩溃吗?另一种选择是,如果类函数实际上不访问类变量,则可以放弃dynamicType,使用常规重写函数。这段代码来自一个全新的测试项目来调试它。我需要它是一个类变量,所以现在我使用一个变通方法。