2015-09-18 1 views
23

Вчера я установил официальный Xcode 7, и когда я попытался открыть один из моих проектов Swift, появилось предупреждение о том, что новая версия Xcode хочет обновите мой быстрый код (или что-то вроде этого). Хорошо, я принял, и после этого появилась ошибка "Command failed due to signal: Segmentation fault: 11" (если вы хотите получить подробные сведения, я могу написать весь текст ошибки). У кого-то такая же проблема?Ошибка компиляции Xcode 7: «Ошибка команды из-за сигнала: ошибка сегментации: 11»

Благодаря

Отредактировано

Я установил назад Xcode 6.4 и это не нормально, никаких ошибок компиляции.

+0

Когда вы открываете Xcode 7, он попросит вас обновить проект, чтобы использовать Swift 2.0, что может сломать что-то, что такое журнал ошибок? –

+0

@MichaelWang Журнал ошибок непонятен (поверьте). Итак, я должен создать новый проект? –

+0

ОК, так что вы можете вернуть код обратно и попробовать открыть с помощью Xcode 7, но не конвертировать его, чтобы использовать Swift 2, чтобы узнать, можно ли его выполнить или нет? –

ответ

0

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

+1

Повторное создание нового проекта займет некоторое время, потому что я использую сторонние фреймворки, и это не стоит , Да, яблоко глупо! –

0

Вы попробовали повторное открытие проекта и/или повторное добавление своей схемы? Я сделал это, и ошибка исчезла.

0

У меня была такая же ошибка в моем проекте после обновления до xCode 7. Я решил удалить новую версию xCode и установить xCode 6.4. В конце концов, он отлично работал с использованием xCode 6.4, поэтому я предлагаю вам сделать это для начала. В других руках вы всегда должны быть в курсе событий, но вы также можете иметь как xCode 6.4, так и 7.0 :) Надеюсь, это сработает для вас!

6

Посмотрите на другое предупреждение, которое вы видите вокруг.

В моем случае я указал на проблему с iOS9 и GoogleAds. См. Здесь: https://developers.google.com/admob/ios/ios9

Короткий ответ состоял в том, чтобы отключить установку сборки ENABLE_BITCODE.

Моя ошибка:

ld: '/pp/src/shared_js/libs/GoogleMobileAdsSdkiOS-7.3.1/GoogleMobileAds.framework/GoogleMobileAds(GADGestureIdUtil.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7 
clang: error: unable to execute command: Segmentation fault: 11 
clang: error: linker command failed due to signal (use -v to see invocation) 
+0

Это было правильное направление для меня, но я должен был это сделать пару раз. NO Clean Build ... YES Clean Build. Работал в моем случае. – tymac

1

Я имел ту же ошибку, из-за:

let stringB: String? = stringA.characters.count = 0 ? nil : stringA 

Решение было изменить его на:

let stringB: String? = stringA.characters.count > 0 ? stringA : nil 

Может быть, это поможет кому-то ...

+0

Я обнаружил, что такой неправильный синтаксис может вызвать начальную ошибку. Спасибо, что вы упомянули об этом! –

+0

Что не так с этим синтаксисом? – Manuel

+5

вы должны использовать ==, а не = в условном заявлении –

0

Res tart xcode. Чистая сборка (cmd + k, cmd + shift + k и чистая папка сборки -> опция + cmd + shift + k) Это должно устранить проблему.

+0

Это не сработало для меня. – Aaron

+0

Aah ok. Но это работает для многих из нас. В любом случае попробуйте другие варианты. Последнее средство, которое я попробовал, перезапускает сам mac. Это много раз помогало мне фиксировать неизвестные проблемы либо из-за ссылок, либо из-за ошибок XCode. – user2084611

+0

Рестарт оказался исправным. Благодаря! Это происходило во всех моих проектах, поэтому я решил, что это большая проблема, чем строка кода. – Aaron

-1

Ошибка исчезла в то же время со следующей версией Xcode. После некоторых исследований на яблочных форумах произошла ошибка с той версией «лучшей» IDE, когда-либо, Xcode. Надеюсь, что все ответы помогли кому-то.

7

Это указывает на то, что в коде отсутствует какой-либо метод Required/func. В моем случае я использовал ObjectMapper и в моем классе я забыл включить required init() метод, который вызывает этот "Command failed due to signal: Segmentation fault: 11"

required init?(_ map: Map) { 

} 
+1

У меня была такая же проблема. –

+0

Точно, у меня была такая же проблема .. Я реализовал _struct_, и я не нашел другого варианта, кроме перехода на _class_ и добавления ** обязательного ** для init. Спасибо, что поделились! –

0

Я пытался написать NSData в файл, как следующий код.

if let currentResumeData = currentUserInfo["NSURLSessionDownloadTaskResumeData"] 
{ 
    // the following "do" was giving the above mentioned compile error. 
    do { 
     try currentResumeData.writeToFile(fileNameString, options: .DataWritingAtomic) 
    } catch {} 
    // the above error code. 
} 

После прочтения различных ответов на StackOverflow я изменил его как внизу, что устранило ошибку.

if let currentResumeData:NSData = currentUserInfo["NSURLSessionDownloadTaskResumeData"] as? NSData { 
{ 
    do { 
     try currentResumeData.writeToFile(fileNameString, options: .DataWritingAtomic) 
    } catch {} 
} 

Как вы можете видеть, компилятор необходим соответствующий тип NSData переменной «currentResumeData» назвать это метод .writeToFile.

Уверен, что это будет полезно для других.

3

Сначала я рекомендую внимательно просмотреть журнал сборки, чтобы найти файл с проблемами. В моем случае необязательное значение, используемое в цикле for, вызвало ошибку сегментации в процессе сборки.

for i in 0..<hoge?.count { 

Я исправил свой код следующим образом;

for i in 0..<hoge!.count { 

У меня нет ошибки сейчас. \ (^ O ^)/

+0

Xcode 7.3 не может скомпилировать этот код с ошибкой ошибки сегментации. Предыдущая версия может сделать. Я указываю, что эта проблема основана на коде, и причина может быть найдена путем проверки журнала сборки. –

1

У меня была та же проблема. Xcode 7.2.1. И, выбирая ошибку и расширяя журналы, я мог найти ошибку компиляции, заложенную среди длинных путей.

См. Строку после "1." в прикрепленном изображении. Он имеет ссылку на файл и строку. Посмотрев на это, я смог найти ошибку.

В моем случае, я имел недопустимое назначение перечисления, я двинул некоторую логику от структуры к перечислению и вводил эту ошибку:

я имел:

return .Success(dict: dict) 

я должен иметь:

return .Success(dict) 

Log error after selecting it in the Issue Navigator

0

Я пытался сделать использование когда это произошло со мной.

Я думаю, что swift не нравится, когда вы пытаетесь связать несколько? вместе, как и в случае, хотя подсветка синтаксиса не вызывает никакой ошибки:

let ageNum = self.ageValue > 0 ?? self.birthday?.ageFromDate() ?? 0 
2

Внимательно прочитайте отладочное сообщение.

Я столкнулся с этой ошибкой, потому что я использовал сингл '=' вместо double '=' по ошибке в if-statement.

if aString.characters.count = 2 {...} 
+0

Внимательно прочитайте отладочное сообщение. - В точку! В то время как сообщение об ошибке просто «Ошибка команды из-за сигнала: ошибка сегментации: 11», причина скрыта в свернутом сообщении журнала. Странно, что Xcode не отображает его корректно. – brigadir

1

Я столкнулся с этой ошибкой компиляции в Xcode версии 7.3 (7D175), быстром проекте. Далее сценарий:

  1. Заявленный «@objc протокол» в быстром классе
  2. В другом классе, который реализует этот протокол, один из не-опционных методов не реализован

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

11

Omg, это потрясающая ошибка Xcode. Просто прочитайте это. http://blog.bellebethcooper.com/xcode-bug.html Это заставило меня улыбнуться.

The change was deceptively small, but here's what it was (inside my API client class, where I actually get the JSON data from the API):

I changed this:

`let json = try? NSJSONSerialization.JSONObjectWithData(data, options: [])` 

to this:

`let json = try? NSJSONSerialization.JSONObjectWithData(data, options: []) as! [String: AnyObject]` 

This is one of the most frustrating debugging experiences I've ever had, but I hope this post might help someone else who has the same issue. And if you ended up here via googling a bug you're struggling with and this didn't help you, I'm so sorry. I know exactly what you're going through. Don't give up!

+1

У меня была проблема с JSON, но она ссылалась на данные, используя многочисленные многоуровневые словарные ссылки, которые вызвали эту проблему для меня. Тот же код также разбил подсветку синтаксиса (часто это признак проблемы).Я говорил (что-то типа): funcCall (data! ["Address"]! ["Street_address"] как String, data! ["Address"]! ["Locality"] как String и т. Д. И т. Д. И т. Д.). Я просто удалил многоуровневые словарные ссылки при доступе к данным, и обе эти проблемы были устранены. – RowanPD

+0

Прос для отладки: проверьте слишком длинные имена переменных и слишком длинные команды. –

1

Для меня проблема (XCode 7.3.1) использовала оператор + = для словаря.

, например:

func test() { 
    var myDict:[String:String] = [:] 
    myDict["key"] = "pig" 
    myDict["key"] += "dog" 

    var myArray:[String] = [] 
    myArray.append("pig") 
    myArray[0] += "dog" 
} 

Это приведет к ошибке сегментации. Удалите + = на myDict, и все в порядке.

Я знаю, что это ошибка (словарные ссылки имеют значение NULL), но компилятор не должен так выглядеть.

0

Для меня проблема заключалась в изменении того, как я проверяю, что-то было ложным. Вместо того, чтобы:

if object1.hidden == false { 
} 

изменение:

if object1.hidden != true { 
} 
0

Для меня это была длинная функция, которая содержала массив данных испытаний.

0

Для меня:

Я использую Замыкание в AnyObject, после того как я использовать эту функцию Cast closures/blocks. Ошибка решена.

typealias UserCallBack =() -> Void 
... 
if let callBack = callBack as? AnyObject { 
    request?.userInfo["callBack"] = callBack 
} 
0

Вот как я исправил - сначала, как предложено многими здесь, пожалуйста, внимательно прочитайте журнал. Фактически это говорит вам точно номер строки, в которой он терпит неудачу, и почему он терпит неудачу. Просто комментируя эту строку, исправлена ​​проблема. В моем случае это была ошибка проверки типа. Я использую Gloss structs для синтаксического анализа JSON, и кажется, что по мере того как вы идете глубже в иерархии JSON, иногда встроенный парсер не распознает, что существует проблема времени компиляции. Когда вы строите проект, он терпит неудачу. В идеале ошибка проверки типа должна распознаваться встроенным парсером. Так что это может быть проблемой с Xcode, но это ваш код, который его нарушает. Когда я прочитал много сообщений - мой анализ выглядит следующим образом .. Основная причина связана с проверкой типов. Когда вы пытаетесь назначить неверные типы (необязательно или иначе), а встроенный парсер не распознает его в некоторых случаях. Когда вы его создаете, он распознает его и вызывает ошибку сегментации. Его код неправильный, несмотря на ошибку с Xcode, он может быть исправлен, если мы внимательно читаем журналы!

0

Для меня это было вызвано объявляя-структуру в конечном классе расширения:

final class X { 
    ... 
} 

extension X { 
    struct Y { 
     ... 
    } 
} 
4

меня сталкиваются с этой проблемой много времени при преобразовании различных проектов в Swift3.0.

Поскольку эта проблема выглядит динамичной, у каждого есть свое решение, кроме любого универсального ответа. Но в этом вопросе основная проблема заключается в том, чтобы определить место для работы. Так что я следую, как показано ниже:

  • Определить метод, который один отвечает за ошибки

    Нажмите на Сообщение об ошибке

enter image description here

  • Здесь вы будете id entify класс, который отвечает за ошибки компиляции генерировать ошибка времени

    enter image description here

В моем случае AppDelegate отвечает.

  • Чтобы найти строку ошибки, перейдите к концу длинных ошибок description.You будет найти что-то вроде кода ниже:

    1. While emitting IR SIL function @_TFC9MyProject11AppDelegate21getNotificationDetailfGSqGVs10DictionaryVs11AnyHashableP___T_ for 'getNotificationDetail' at /Users/ABC/Documents/BitBucket/iOS/2016/Projects/MyProject/AppDelegate/AppDelegate.swift:153:5

Здесь 153 находится строка кода в AppDelegate.swift.

func getNotificationDetail(_ launchOptions : [AnyHashable: Any]?) { 
    if launchOptions != nil { 
     let dictLaunch = launchOptions! as NSDictionary 
     NotificationCenter.default.addObserver(self, selector: #selector(AppDelegate.openRespectiveNotificationScreen), name: NSNotification.Name(rawValue: WebServiceKey.APPMANAGER_SERVICE_CALL_FINISH), object: nil) 

     inactiveUserInfo = dictLaunch.object(forKey: UIApplicationLaunchOptionsKey.remoteNotification) as? NSDictionary 
    } 
} 

Затем прокомментируйте весь код внутри метода и постройте снова. Затем попробуйте разогнать одну строку, так что вы, наконец, получите строку, которая генерирует ошибку.

После нахождения точной строки кода вы можете легко ее исправить.

В моем коде я обнаружил, что последняя строка этого метода генерирует ошибку.

Таким образом, я заменяю его на код ниже, и он строится успешно.

inactiveUserInfo = dictLaunch[UIApplicationLaunchOptionsKey.remoteNotification] as? NSDictionary 

Так что главное - отлаживать осторожно. Попробуйте этот способ, вы обязательно решите ошибку.

+1

U спас меня после бесчисленных часов, спасибо помощнику – vinbhai4u

+1

Это должно быть отмечено как ответ. – Oprimus

0

У меня есть проект, который время от времени происходит в том же файле. Мое обходное решение:

Перейти к файлу, в котором упомянута ошибка сегментации, закомментировать все импортные данные, выполнить (сбой сборки явно), раскомментировать все импортные -> Сборка успешно.

Моим импортом были Firebase и FirebaseAuth, если это кому-то помогает.

0

Я получил эту ошибку при попытке скомпилировать с Xcode 8.2.1. Я использую Cocoa Pods и подозреваю, что один из них был проблемой, поскольку некоторые файлы pod ссылались на длинный вывод ошибки из компилятора. После выхода из Xcode и выполнения pod update в моем каталоге проектов (через Terminal), я смог успешно скомпилировать, когда я снова открыл свой проект.

+0

Кажется, что я столкнулся с этим также с Xcode 8.2.1 и CocoaPods 1.2.0. Однако проект компилируется с помощью Xcode 8.3 beta. –

0

В моем случае бросок, который я должен был исправить, был похож на ответ Мурата Ясара (https://stackoverflow.com/a/36867502/512403), но у меня было две части, чтобы исправить. компилятор не работает с оригинальным исправить, так что мне пришлось настроить свой код еще немного больше:

Bad версия:

let jsonObject: AnyObject? = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) 

Хороший вариант:

let jsonObject = try? NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! [String: AnyObject] 

Может быть, это может помочь кому-то новому в этих причудах Свифта.

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