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

Ошибка Xcode swift с кодом выхода 254

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

<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation)
Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254

Ошибка отображается где-то в следующем сегменте кода:

var animalViewToSwap: AnimalView = animalViewMatrix.objectAtRow(0, andColumn: 0) as AnimalView
var currentRow = 0
var currentColumn = 0
var animalToSwapWith = true

var currentLocation = animalViewMatrix.findLocationOfObject(animalView)

currentRow = Int(currentLocation.row) - 1
currentColumn = Int(currentLocation.column) - 1

var rowDisplacement = 0
var columnDisplacement = 0

switch inDirection{

    case "left":
        columnDisplacement = withDistance * -1
        if (Int(animalViewMatrix.columns) > currentColumn + columnDisplacement)&&(currentColumn + columnDisplacement >= 0)&&(animalViewMatrix.objectAtRow(CInt(currentRow), andColumn: CInt(currentColumn + columnDisplacement)) is AnimalView)
        {
            animalToSwapWith = true;
        }
        else { animalToSwapWith = false }

    default:
        println("error")
        animalToSwapWith = false
        break
}

(У меня больше случаев, которые очень похожи, и я оставляю их для простоты - ошибка в них отсутствует)

Первая ошибка

В строке есть одна ошибка: animalToSwapWith = false, и если я установил ее в true и прокомментировал все остальное, кроме строк инициализации переменной, ошибка исчезнет. Кроме того, если я прокомментирую все это, но создаю экземпляр animalToSwapWith для false, возникает ошибка, даже если это не происходит, когда оно создается для true.

Вторая ошибка

В строке есть вторая ошибка: if (Int(animalViewMatrix.columns) > currentColumn + columnDisplacement)&&(currentColumn + columnDisplacement >= 0)&&(animalViewMatrix.objectAtRow(CInt(currentRow), andColumn: CInt(currentColumn + columnDisplacement)) is AnimalView) В этой строке все эти методы были вызваны ранее в файле с переменными одного и того же типа, поэтому знание методов не должно иметь значения.

Заключение

Есть ли причина, по которой происходят эти две ошибки, или это потому, что swift и Xcode-6 все еще находятся в бета-тестировании, и это ошибка в Xcode? Также обратите внимание, что при комментировании двух ошибок друг от друга по одному сообщение об ошибке одно и то же.

4b9b3361

Ответ 1

Это ошибка компилятора Swift, очевидно, тестирование для двух или более неявно разворачиваемых опций приводит к сбою компилятора при некоторых или многих обстоятельствах. Используйте Apple Bugreporter, чтобы записать эту проблему, пометить ее как дубликат rdar://17212295.

Пример

Вот минимальный пример, сбой с той же ошибкой:

let a: String!
let b: String!

if a && b {
    println("have both")
}

Скомпилируйте командную строку следующим образом и убедитесь в том же сбое:

$ xcrun swift -v -g crash.swift

Ответ 2

Я получал ту же ошибку, и я отследил ее до следующего: я расширял NSError, а в расширении определялось enum. Перемещение определения enum из расширения фиксировало ошибку.

extension NSError {
    enum WYBErrorCodes: Int {
        case Fatal = 1000
        case XmlParse = 1100
        case CoreData = 1200
    }

    [...]
}

Ответ 3

Я получаю ту же ошибку, когда принимаю протокол NSTextViewDelegate для своего класса. Если я удалю этот протокол, компиляция будет прекрасной. Странно.

Ответ 4

Для того, чтобы обеспечить другие возможные причины и как их исправить; Я пытался установить область отображения карты внутри блока отправки. Если я прокомментировал настройку области, ошибка исчезнет.

    dispatch_once(&centerMapLocation, {
//                var theSpan: MKCoordinateSpan = MKCoordinateSpanMake(0.01, 0.01)
//                var theRegion: MKCoordinateRegion = MKCoordinateRegionMake(manager.location.coordinate, theSpan)
//                self.map.setRegion(theRegion, animated: true)
                })
        }

Ответ 5

Я получаю ту же ошибку, когда пытаюсь расширить NSArray, чтобы иметь метод foreach:

extension NSArray {

    func foreach(f: (AnyObject -> ())) {
        for elem in self {
            f(elem)
        }
    }
}

Похоже, что расширение NSArray с func, которое принимает аргумент функции, вызовет те же проблемы. Я работал над проблемой, определяя функцию forEachInArray, которая принимает NSArray в качестве аргумента:

func forEachInArray<T>(array: NSArray, f: (AnyObject -> ())) {
    for elem in array {
        f(elem)
    }
}

Ответ 6

В моем случае я вызывал функцию objective-c из быстрого моста. Подпись была похожа -

    - (SomeReturnType *)getSomething:(SomeOptions *)options
                          success:(void (^)(NSArray *response))success
                          failure:(void (^)(NSError *error))failure;

Из swift я вызывал его следующим образом и получал ошибку компиляции, так как "Ошибка Xcode swift с кодом выхода 254" -

    ObjCClass().getSomething(nil, success: {(response : Array!) in


        }, failure: {(error: NSError!)  in

        })

изменив его на следующие работающие для меня -

     ObjCClass().getSomething(nil, success: {(response : [AnyObject]!) in


        }, failure: {(error: NSError!)  in

        })

Ответ 7

У меня была эта ошибка, и ошибка была решена в бета-версии 7, доступной в Интернете сегодня.