EXC_BAD_ACCESS при попытке кодирования подкласса Codable-совместимого класса

Я, должно быть, идиот или что-то в этом роде, но я чешу затылок третий день подряд и не могу понять, что не так с моим намерением закодировать некоторые данные JSON в моей программе Swift ...

Вот такая ситуация: У меня есть два следующих класса:

class Node: Codable {
    // Nothing in here
}

а также

class Shape: Node {
    // No code here too
}

Затем я пытаюсь закодировать подкласс следующим образом:

do {
    let encodedData = try JSONEncoder().encode(Shape())
} catch {
    print(error)
}

Это все, что я добавил в пустой проект приложения для единого просмотра. Когда я запускаю его, я получаю сбой «Thread 1: EXC_BAD_ACCESS (code = 1, address = 0x350)».

EXC_BAD_ACCESS при попытке кодирования подкласса Codable-совместимого класса

Конечно, изначально у моих классов было много свойств, которые тоже можно было кодировать. Я подумал, что это любой из них, поэтому снял их, но, похоже, сбой вызван не свойствами ...

Я запускаю Xcode 9.3 на MacBook Pro High Sierra. Есть ли кто-нибудь, желающий воспроизвести это, или кто-то уже столкнулся с таким странным поведением?

Звучит многообещающе. Значит, что-то не так с моей настройкой. Есть идеи, что сбросить или переустановить? Имейте в виду, что я создал совершенно новый проект, поэтому это должно исключить любое наследие от предыдущих изменений самого проекта. Возможно, это связано с какой-то несогласованной настройкой?

Stoyan 08.06.2018 23:34

Это именно то, что я сделал, Мэтт :(

Stoyan 08.06.2018 23:42

С удовольствием: github.com/stoyanmar/CodableTest

Stoyan 08.06.2018 23:57

Да, чистая сборка, затем закрыл Xcode, удалил DerivedData для этого конкретного проекта, удалил подпапку ModuleCache в DerivedData (не уверен, что пришлось бы), а затем перезапустил Xcode. Тот же результат. Могу ли я предпринять какие-то другие шаги?

Stoyan 09.06.2018 00:14

Мэтт, хотя я вообще не использую симуляторы, я последовал твоему совету и удалил все симуляторы, вышел из Xcode, полностью очистил папку DerivedData, включая ModuleCache, перезапустил Mac, и вот мы снова - изящный сбой ... Возможно, переустановка Xcode следующий в очереди?

Stoyan 09.06.2018 00:29

Да, после вашего предложения удалить симуляторы, я решил, что вы должны тестировать его на симуляторе, поэтому я переустановил симулятор iPhone X, но безуспешно. Обычно я тестирую iPad Pro - гораздо быстрее и правильно обрабатывает прикосновения.

Stoyan 09.06.2018 00:34

Сейчас ты разговариваешь! :) Что вы изменили, чтобы туда попасть?

Stoyan 09.06.2018 00:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
7
599
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это известная ошибка, и ее можно обойти, включив режим компиляции всего модуля для конфигурации отладки или обновившись до бета-версии Xcode 10.

См. bugs.swift.org/browse/SR-7743. Я добавил в отчет ваш проект на github, поэтому, пожалуйста, не удаляйте его.

matt 09.06.2018 00:53

Мэтт, действительно, когда я изменил режим компиляции (отладка) с одного файла на целый модуль, все вернулось к норме. Надеюсь, это те настройки, о которых вы говорили. Ты спас мне день, тьфу, ночь! Очень благодарен за обнаружение источника проблемы! Конечно, я не собираюсь снимать его в ближайшее время.

Stoyan 09.06.2018 01:06

Да, извините, я имел в виду компиляцию, у меня в голове была Оптимизация, пока я печатал.

matt 09.06.2018 01:11

Другие вопросы по теме