Подтвердить что ты не робот

Ошибка компиляции Xcode 7: "Ошибка команды из-за сигнала: Ошибка сегментации: 11"

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

Спасибо

Edited

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

4b9b3361

Ответ 1

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

Изменение было обманчиво маленьким, но вот что было (внутри моего клиентского класса API, где я фактически получаю данные JSON от API):

Я изменил это:

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

:

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

Это один из самых неприятных отладочных событий, которые я когда-либо испытывал но я надеюсь, что этот пост может помочь кому-то другому, у кого есть тот же вопрос. И если вы попали сюда через googling ошибку, с которой вы боретесь с, и это вам не помогло, мне очень жаль. Я точно знаю, что вы проходите. Не сдавайтесь!

Ответ 2

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

required init?(_ map: Map) {

}

Ответ 3

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

В моем случае я указал на проблему с 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)

Ответ 4

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

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

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

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

введите описание изображения здесь

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

    введите описание изображения здесь

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

  • Чтобы найти строку ошибки, перейдите к концу длинного описания ошибки. Вы найдете код, как показано ниже:

    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

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

Ответ 5

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

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

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

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

У меня нет ошибки. \(^ О ^)/

Ответ 6

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

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

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

Ответ 7

У меня была такая же ошибка из-за:

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

Решение заключалось в том, чтобы изменить его на:

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

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

Ответ 8

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

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

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

У меня было:

return .Success(dict: dict)

Мне нужно:

return .Success(dict)

Ошибка журнала после выбора его в Навигаторе проблем

Ответ 9

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

  • Объявлен "протокол @objc" в классе быстрого
  • В другом классе, который реализует этот протокол, один из необязательных методов не реализован.

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

Ответ 10

Для меня проблема (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), но компилятор не должен выглядеть так.

Ответ 11

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

Ответ 12

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

Ответ 13

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

Ответ 14

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

Ответ 15

Я пытался записать 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.

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

Ответ 16

Я пытался использовать??? умным способом, когда это случилось со мной.

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

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

Ответ 17

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

if object1.hidden == false {
}

измените на:

if object1.hidden != true {
}

Ответ 18

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

Ответ 19

Для меня:

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

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

Ответ 20

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

Ответ 21

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

final class X {
    ...
} 

extension X {
    struct Y {
        ...
    }
}

Ответ 22

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

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

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

Ответ 23

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

Ответ 24

В моем случае бросок, который я должен был исправить, был похож на ответ Мурата Ясара (fooobar.com/questions/182378/...), но у меня было две части, чтобы исправить. Компилятор не работал с оригинальным исправлением, поэтому мне пришлось еще немного настроить мой код:

Плохая версия:

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

Хорошая версия:

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

Возможно, это может помочь кому-то новому в этих причудах Swift.

Ответ 25

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