1

我在 Xcode 7.3 上的 Swift 2.2 中发现了奇怪的错误(或者这不是错误,但我做错了)。

我有一个案例和类的枚举,该枚举将此枚举作为初始值设定项的参数

enum OneCaseEnum {
    case X
}

class OneEnumWrapper {
    var myVar: OneCaseEnum

    init(v: OneCaseEnum)
    {
        self.myVar = v
    }
}

现在,如果我在真正的应用程序中运行此代码,即在 AppDelegate 的某个地方:

let e = OneCaseEnum.X
print(e)
let x = OneEnumWrapper(v: e)
print(x)

我在第三行运行时得到了 BAD_ACEESS。

  • 它在 Xcode 7.3 中崩溃(在以前的版本上工作正常)。
  • 在操场上工作正常。
  • 如果我添加另一个枚举案例就可以了
  • 如果我将 myVar 标记为未包装的可选工作正常

我做错了什么还是 Swift/Xcode/compiler/其他错误?

4

1 回答 1

4

这绝对是编译器的错误。奇怪的是,完美地case为您的enum作品增加了一秒钟:

enum OneCaseEnum {
    case X
    case Y
}

class OneEnumWrapper {
    var myVar: OneCaseEnum

    init(v: OneCaseEnum)
    {
        self.myVar = v
    }
}

let e = OneCaseEnum.X
print(e)
let x = OneEnumWrapper(v: e) // no crash
print(x)

在识别并修复此崩溃之前,您可以将此用作解决方法。

rdar://25314388

SR-1035

示例项目

于 2016-03-23T14:55:50.810 回答