Swift 的枚举有一个案例在运行时导致 BAD_ACCESS
Swift's enum with one case causes BAD_ACCESS at runtime
我在 Swift 2.2 on Xcode 7.3 中发现了一个奇怪的错误(或者这不是错误,但我做错了什么)。
我有一个枚举,class 将这个枚举作为初始值设定项的参数
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)
我在第 3 行 运行 的时候得到了 BAD_ACEESS。
- 它在 Xcode 7.3 中崩溃(在以前的版本上工作正常)。
- 在操场上工作正常。
- 如果我添加另一个枚举案例就可以了
- 如果我将 myVar 标记为未包装的可选作品 OK
是我做错了什么还是 Swift/Xcode/compiler/something 其他错误?
这绝对是编译器的错误。奇怪的是,在 enum
中添加第二个 case
效果非常好:
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)
在识别并修复此崩溃之前,您可以使用此作为解决方法。
我在 Swift 2.2 on Xcode 7.3 中发现了一个奇怪的错误(或者这不是错误,但我做错了什么)。
我有一个枚举,class 将这个枚举作为初始值设定项的参数
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)
我在第 3 行 运行 的时候得到了 BAD_ACEESS。
- 它在 Xcode 7.3 中崩溃(在以前的版本上工作正常)。
- 在操场上工作正常。
- 如果我添加另一个枚举案例就可以了
- 如果我将 myVar 标记为未包装的可选作品 OK
是我做错了什么还是 Swift/Xcode/compiler/something 其他错误?
这绝对是编译器的错误。奇怪的是,在 enum
中添加第二个 case
效果非常好:
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)
在识别并修复此崩溃之前,您可以使用此作为解决方法。