Перечисление Swift с одним случаем вызывает BAD_ACCESS во время выполнения
Я обнаружил странную ошибку в Swift 2.2 на Xcode 7.3 (или это не ошибка, но я делаю что-то не так).
У меня есть перечисление с одним регистром и классом, который принимает это перечисление в качестве параметра инициализатора
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 во время выполнения в 3-й строке.
- Вылетает в Xcode 7.3 (на предыдущих версиях работает нормально).
- На детской площадке работает ок.
- Если я добавлю еще один enum case работает нормально
- Если я отмечу myVar как развернутый, необязательно работает ОК
Я делаю что-то не так или это ошибка Swift/Xcode/compiler/ что-то еще?
1 ответ
Решение
Это определенно ошибка с компилятором. Как ни странно, добавив вторую 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)
Вы можете использовать это в качестве обходного пути, пока этот сбой не будет идентифицирован и исправлен.