Swift 的枚举有一种情况会在运行时导致 BAD_ACCESS

Kub*_*bba 1 xcode enums swift swift2 xcode7.3

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

我有一个带有一种情况和类的枚举,该类将此枚举作为初始值设定项的参数

enum OneCaseEnum {
    case X
}

class OneEnumWrapper {
    var myVar: OneCaseEnum

    init(v: OneCaseEnum)
    {
        self.myVar = v
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我在真实应用程序中运行此代码,即 AppDelegate 中的某处:

let e = OneCaseEnum.X
print(e)
let x = OneEnumWrapper(v: e)
print(x)
Run Code Online (Sandbox Code Playgroud)

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

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

我做错了什么或者是 Swift/Xcode/编译器/其他错误吗?

JAL*_*JAL 5

这绝对是编译器的一个错误。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)
Run Code Online (Sandbox Code Playgroud)

您可以将此作为解决方法,直到识别并修复此崩溃。

雷达://25314388

SR-1035

示例项目