[swift] Xcode 7 컴파일 오류 : "명령으로 인해 신호 실패 : 세그먼트 오류 : 11"



Answers

일부 Required 메서드 / func가 코드에서 없음을 나타냅니다. 내 경우에는 ObjectMapper 를 사용하고 있었고 클래스에서 required init() 메소드를 포함 required init() 것을 잊어 버렸습니다. "Command failed due to signal: Segmentation fault: 11"

required init?(_ map: Map) {

}
Question

어제 Xcode 공식 7을 설치했고 Swift 프로젝트 중 하나를 열려고 할 때 새로운 Xcode 버전이 신속한 코드 (또는 이와 비슷한 코드)를 업데이트하려고한다는 경고가 나타났습니다. 좋아, 내가 받아 들였고 "Command failed due to signal: Segmentation fault: 11" 오류가 발생했습니다. 자세한 내용은 전체 오류 텍스트를 작성할 수 있습니다. 누구나 같은 문제가 있습니까?

감사

수정 됨

Xcode 6.4를 다시 설치했는데 괜찮습니다. 컴파일 오류가 없습니다.




여기에 제가 어떻게 고쳐 지는지가 있습니다 - 많은 분들이 제안한대로 먼저 로그를주의 깊게 읽으십시오. 실제로 실패하고있는 라인 번호와 실패한 라인 번호를 정확하게 알려줍니다. 이 줄을 주석으로 처리하여 문제가 해결되었습니다. 제 경우에는 유형 검사 오류였습니다. JSON 구문 분석을 위해 Gloss 구조체를 사용하고 있는데, JSON 계층 구조가 깊어지면서 인라인 파서가 컴파일 시간 문제가 있음을 인식하지 못하는 경우가 종종 있습니다. 프로젝트를 빌드하면 실패합니다. 이상적인 형식 검사 오류는 인라인 파서에서 인식되어야합니다. 그래서 이것은 Xcode에서 문제가 될 수 있지만 코드를 깨뜨리는 것입니다. 내가 많은 게시물을 읽을 때 - 내 분석은 다음과 같습니다. 근본 원인은 유형 검사와 관련됩니다. 잘못된 유형 (선택적 또는 기타)을 지정하려고 할 때 인라인 파서는 일부 인스턴스에서이를 인식하지 못합니다. 빌드 할 때이를 인식하고 세그먼트 화 오류가 발생합니다. 그것의 우리 코드는 Xcode의 버그에도 불구하고 잘못되었습니다. 우리가주의 깊게 로그를 읽으면 고칠 수 있습니다!




필자의 경우, 수정해야하는 캐스트는 Murat Yasar의 답변 ( https://.com/a/36867502/512403 )과 유사하지만 수정하려면 두 부분으로 구성해야했습니다. 컴파일러는 원래 픽스와 함께 작동하지 않았으므로 코드를 조금 더 조정해야했습니다.

잘못된 버전 :

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

좋은 버전 :

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

아마 이것은 Swift의 이러한 단점에 새로운 누군가를 도울 수 있습니다.




나는을 사용하려고 노력하고 있었습니까 ?? 이것이 나에게 일어 났을 때 영리한 방법으로.

나는 당신이 다수를 사슬로 매 달리려고 할 때 신속함을 좋아하지 않는다고 생각 하는가 ?? 구문 하이 라이터가 아무런 오류도 던지지 않지만 함께 사용합니다.

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



나를 위해 그것은 테스트 데이터 배열을 포함하는 긴 함수였습니다.




xcode를 다시 시작하십시오. 클린 빌드 (cmd + k, cmd + shift + k 및 ​​클린 빌드 폴더 -> 옵션 + cmd + shift + k) 문제를 해결해야합니다.




여러 프로젝트를 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

여기 153AppDelegate.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

그래서 중요한 것은 신중하게 디버깅하는 것입니다. 이 방법을 시도해 보면 오류를 쉽게 풀 수 있습니다.




프로젝트를 다시 열거 나 계획을 다시 추가하려고 했습니까? 나는 그것을했고 오류는 사라졌다.




나에게이 문제 (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에서 제거하면 모두 정상입니다.

이 버그 (사전 참조 nullable 수 있음) 알고 있지만 컴파일러는이 같은 쓰레기를해서는 안됩니다.




나는 때때로 같은 파일에서 일어나는 프로젝트를 가지고있다. 내 해결 방법은 다음과 같습니다.

세분화 오류가 언급 한 파일로 이동하여 모든 가져 오기를 주석으로 처리하고 (빌드가 명백하게 실패 함) 모든 가져 오기의 주석 처리를 제거합니다. -> 성공적으로 빌드합니다.

내 수입품은 누군가를 돕는 경우 Firebase와 FirebaseAuth입니다.




나는 똑같은 문제가 있었다. Xcode 7.2.1. 그리고 오류를 선택하고 로그를 확장하면 컴파일 오류가 긴 경로에 묻혀있는 것을 알 수 있습니다.

"1"다음 줄을보십시오. 첨부 된 이미지에서 그것은 파일과 라인에 대한 참조를 가지고 있습니다. 그것을 보면 오류를 찾을 수있었습니다.

내 경우에는 유효하지 않은 열거 할당이 있었고 구조체의 일부 논리를 열거 형으로 이동하고이 오류를 주입했습니다.

나는 가지고 있었다 :

return .Success(dict: dict)

나는 있어야한다 :

return .Success(dict)




디버그 메시지를주의 깊게 읽으십시오.

실수로 if 문에서 이중 '='대신 '='을 하나 사용했기 때문에이 오류가 발생했습니다.

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



Links