Если у вас есть раскадровка / XIB с IBOutlet, подключенным к соответствующему свойству IBOutlet в вашем коде, а затем вы удаляете выход в коде, вы раньше вылетали с довольно загадочным сообщением об ошибке о том, что «этот класс не является кодированием значения ключа -совместимый для ключа <outlet_name>
"
Это не первое мое родео Xcode, поэтому я привык к этому сообщению. Я вижу это и думаю: «О, дерьмо, у меня либо неработающая ссылка на выход, либо пользовательский атрибут времени выполнения, который указывает на недопустимое имя ключа», и иду исправлять это.
Однако моя компания только что перешла на Xcode 9.1 (я знаю, что мы должны быть на 9.2, не говоря уже о 9.1, но у нас большая команда и огромная смешанная кодовая база Swift/Objective-C, и миграция нашей цепочки инструментов чревата сложностью). У меня только что была ошибка слияния, когда в раскадровке остался ныне несуществующий выход.
Когда я запустил приложение и выполнил путь кода, который должен отображать эту сцену в моей раскадровке, у меня произошел сбой в main.m, ничего в трассировке стека и никаких подсказок в консоли. Просто СПЛАТ.
Я потратил 2 часа на поиски этого щенка.
Сообщение об ошибке раньше было загадочным, как h**l, но, по крайней мере, оно дало вам подсказку. Теперь кажется, что вы просто падаете без объяснения причин.