Xcode swift 失败,退出代码 254

Posted

技术标签:

【中文标题】Xcode swift 失败,退出代码 254【英文标题】:Xcode swift failed with exit code 254 【发布时间】:2014-06-11 03:26:27 【问题描述】:

我的代码中出现了这个编译器错误,我不知道为什么:

<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) &gt; currentColumn + columnDisplacement)&amp;&amp;(currentColumn + columnDisplacement &gt;= 0)&amp;&amp;(animalViewMatrix.objectAtRow(CInt(currentRow), andColumn: CInt(currentColumn + columnDisplacement)) is AnimalView) 在这一行中,所有这些方法都已在文件的前面使用上述相同类型的变量调用过,因此对方法的了解并不重要。

结论

出现这两个错误是有原因的,还是因为 swift 和 Xcode-6 仍处于 beta 测试阶段,这是 Xcode 中的一个错误?另请注意,当一次注释掉两个错误时,错误消息是相同的。

【问题讨论】:

请提交错误报告here 【参考方案1】:

这是一个 Swift 编译器错误,显然测试两个或多个隐式展开的选项会导致编译器在某些/许多情况下崩溃。使用Apple's 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
    

    [...]

【讨论】:

感谢您的评论。我有类似的情况,我为 NSScanner 编写了一个扩展,并且在其范围内定义了一个枚举。你的建议奏效了。【参考方案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)
        
    

使用带有函数参数的 func 扩展 NSArray 似乎会导致同样的问题。我通过定义一个将NSArray 作为参数的forEachInArray 函数来解决这个问题:

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

【讨论】:

【参考方案6】:

在我的例子中,我从 swift 通过桥接调用了一个 Objective-c 函数。签名就像-

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

从 swift 中,我按如下方式调用它并获得编译错误为“Xcode swift failed with exit code 254”-

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


        , failure: (error: NSError!)  in

        )

将其更改为以下对我有用 -

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


        , failure: (error: NSError!)  in

        )

【讨论】:

【参考方案7】:

我遇到了这个错误,该错误已在今天在线提供的 Beta 7 中得到解决。

【讨论】:

以上是关于Xcode swift 失败,退出代码 254的主要内容,如果未能解决你的问题,请参考以下文章

链接器命令失败,退出代码 1(使用 -v 查看调用)、Xcode 8、Swift 3

Clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用)Xcode 10、Xcode 10.1 Beta、Swift 4.2

Xcode:Pod 安装后构建失败(错误:链接器命令失败,退出代码 1)

Xcode 9 - 链接器命令失败,退出代码为 1

flutter swift Command PhaseScriptExecution 失败,退出代码为非零

Swift Sdtlib 工具错误:任务失败,退出代码为 1