2015-06-13 2 views
5

Я просто использовал инструмент миграции Xcode 7 для переноса проекта с Swift 1.2 до 2. После устранения ошибок, пропущенных и таких, все хорошо, за исключением ошибки, которая мешает мне даже здание: командование не выполнено из-за сигнала: незаконное указание 4.Ошибка команды Xcode 7 из-за сигнала: незаконная инструкция 4

Я пробовал помощь в этих статьях (Xcode 7 and Swift 2.0 : Command failed due to signal: Abort trap: 6 и Command failed due to signal: Abort trap: 6), которые не являются идентичными для меня, но тем не менее они не смогли исправить проблему.

Я очистил сборку и удалил папку с производными данными. У меня есть современная установка CocoaPods, инструменты Xcode равны 7.0, а оптимизация компиляции Swift - в None. Есть что-то еще, что мне не хватает?

Спасибо!

+1

У меня была такая же проблема, в моем случае у меня было два класса и протокол: «класс A: B, P», но «класс B» имел свойство, которое принудительно выполнялось «протоколом P». По какой-то причине не включая протокол в классе, который действительно имел свойство, вызывал эту ошибку. Я просто сделал «класс B» включен протокол, и ошибка исчезла! – dcestari

+0

Спасибо @dcestari, была ли ошибка сборки, которая помогла вам найти это? Или это была случайная случайность? –

+0

Да @ bj-miller, но они не были ясны, я просто видел похожие вещи для 'ref myAttribute' (предполагая, что' myAttribute' было именем свойства) и 'ref B'. – dcestari

ответ

4

Таким образом, ответ был найден благодаря помощи коллеги. Мы обнаружили файл нарушения в ошибке сборки, но строки не было. Благодаря процессу устранения мы обнаружили, что это строка, объявляющая новую константу в результате получения JSON-словаря ([String: AnyObject], typealiased в JSONDictionary) изнутри дополнительного словаря. Вот строка:

let objectsDictionary = maybeJSON?[key] as? JSONDictionary

Изменено это два сторожевых заявления:

guard let goodJSON = maybeJSON as? JSONDictionary else { return ... } 
guard let objectsDictionary = goodJSON[key] as? JSONDictionary else { return ... } 

Эта линия работала в Xcode 6.3.2, как это было бы просто предоставить дополнительное значение, но по какой-то причине, Некоторое изменение в Xcode 7 не понравилось. Надеюсь, это поможет кому-то другому, кто сталкивается с этим.

1

«Незаконная инструкция» означает, что ваш двоичный код содержит инструкции, которые являются недопустимыми для типа архитектуры, с которой вы пытаетесь запустить код. Начните искать минимальную версию в настройках сборки проекта.

+0

Минимальная версия была установлена ​​в 7.0, даже при изменении до 8.0 или 9.0 по-прежнему происходит ошибка. –

+0

Вы получаете ошибку при создании для симулятора или устройства? – Laurent

+0

Оба. iOS simulator 8.1 и 9.0, а также устройство (iPhone 5s на бета-версию iOS 9). Сама фаза сборки терпит неудачу, я даже не могу ее запустить. –

Смежные вопросы