GM发布的Xcode 6编译

时间:2014-09-10 23:01:40

标签: ios xcode swift

我刚下载了Xcode 6的GM版本,它不会编译出错:

Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1

有关如何解决此问题的任何想法?

21 个答案:

答案 0 :(得分:70)

此错误可能由于多种原因而发生,因此这是一个调试提示。您可能希望尝试在命令行中使用xcodebuild。它将为您提供有关哪些文件是罪魁祸首的详细信息。

要执行此操作,请打开终端并转到项目文件夹。在那里,输入

xcodebuild -project YourProject.xcodeproj -scheme YourScheme

或者如果你在工作区工作

xcodebuild -workspace YourProject.xcworkspace -scheme YourScheme

您可能会看到弹出很多消息,但在输出的最后,您应该会看到导致崩溃的特定文件。回到XCode,进入这些文件并开始使用一些Swift语法来查看正在发生的事情。在我的情况下,它与setAttributeString函数有关,但我看到其他人有问题!和?

希望这会让你朝着正确的方向前进。

答案 1 :(得分:10)

我不得不改变我的"优化等级"无[-0none]

目标>构建设置> Swift编译器>优化级别。

答案 2 :(得分:7)

我的情况有点不同,它涉及枚举和选项。为简单起见,我们定义

enum Animal {
    case Dog
    case Cat
}

func exampleAction(animal: Animal) {}

exampleAction(.Cat)

它会运行正常。但是,只要我将参数设为可选,就会出现错误。所以这段代码不起作用:

func exampleAction(animal: Animal?) {}

exampleAction(.Cat)

为了使其工作,我必须在方法调用中添加显式枚举名称。所以下面的代码再次起作用:

exampleAction(Animal.Cat)

答案 3 :(得分:3)

我认为它出现的原因有很多,我遇到过这种情况,希望它可以帮助你。

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) ){ [weak self] in

        // ...
        dispatch_async(dispatch_get_main_queue()) { [weak self] in

            // ...
            return

        }
    }

在上面的代码中,只需删除“[weak self]”,称为捕获列表将删除编译器错误。它对我有用。

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) ){ [weak self] in

        // ...
        dispatch_async(dispatch_get_main_queue()) {

            // ...
            return

        }
    }

xCode版本是6.1.1

答案 4 :(得分:2)

可能是同一个问题 Swift compile error in XCode 6 GM

我有同样的问题,然后我使用git checkout旧版本来查找导致问题的提交,并尝试找到关键问题代码。我的关键问题代码是这样的

func afunc() {
    class AClass() {
    }
    let ac = AClass()
    //....
}

其他代码可能会出现同样的问题,发生在Swift Optimization中,swift编译器不会告诉您确切的位置。这一定是Apple的错误。

答案 5 :(得分:2)

在我的情况下,我改变了3个地方:

目标>构建设置> Swift编译器>

  • 优化级别。
    • 调试:无[-Onone]
    • 分布:最快[-O]
    • 发布:最快[-O]

当我改变调试时,我有像“Source Kit崩溃......”这样的错误。 这个参数组合对我来说非常有用!

答案 6 :(得分:2)

我看到很多原因。我的答案不是通用的解决方案,只是添加了另一个提供该错误的案例。在我的例子中,它设置了一个按钮的标题:

inputs = [x1 x2 x3 x4];   % Put your inputs in a vector
fixed  = ~(inputs == 0);  % Logical vector for where inputs is not zero

select = ismember(combs(:,fixed),inputs(fixed),'rows') % find where the values correspond

yourMatrix = combs(select,:); % Get your results

而不是:

button!.setTitleColor(.whiteColor(), forState: UIControlState.Normal)

答案 7 :(得分:2)

由于编译器的优化,很多人都有这个问题(包括我)。我不会考虑关闭优化的正确解决方案 - 我希望我的代码能够尽可能快地运行。

手动重新运行xcodebuild并没有做任何好事,因为它在没有优化的情况下运行它。

然而 - 错误屏幕给了我失败的swiftc命令:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -target arm64-apple-ios8.0 -incremental -module-name SpaceCats -O -sdk /Applic...

-O有优化标志。

我在项目目录中重新运行了整个命令(根据上面的xcodebuild建议),在所有细节中我发现了以下错误:

{
"kind": "finished",
"name": "compile",
"pid": 10682,
"output": "Bitcast requires both operands to be pointer or neither\n  %228 = bitcast i8* %227 to %VSs20UnsafeMutablePointer, !dbg !1322\nBitcast requires both operands to be pointer or neither\n  %324 = bitcast i8* %323 to %VSs20UnsafeMutablePointer, !dbg !1322\nBitcast requires both operands to be pointer or neither\n  %411 = bitcast i8* %410 to %VSs20UnsafeMutablePointer, !dbg !1322\nBitcast requires both operands to be pointer or neither\n  %498 = bitcast i8* %497 to %VSs20UnsafeMutablePointer, !dbg !1322\nLLVM ERROR: Broken function found, compilation aborted!\n",
"exit-status": 1
}

如果您希望它转到文件而不是屏幕,请添加" 2 - ;文件名"到最后。

然后我必须在文件中找到pid(10682)以查看它正在编译的内容。我手动运行该pid的命令,它给了我特定文件的错误。然后它归结为修复代码。

答案 8 :(得分:2)

如果您使用的是一些应该在iOS早期版本中使用的API,则可能会导致构建失败。 例如:如果您使用UI_USER_INTERFACE_IDIOM()而不是UIDevice.currentDevice()。userInterfaceIdiom来识别设备类型,则会在没有提示的情况下获得此构建错误。

答案 9 :(得分:1)

在我的情况下,此错误是由不正确的(UTF8).swift文件编码引起的; 通过将文件的内容复制粘贴到新文件中来解决。

答案 10 :(得分:0)

只是把它放在那里:每当我将[unowned self]放在块中的块中时,我都会收到此错误,如下所示:

lazy var someVar: SomeType = {
    self.successBlock = {[unowned self] in
        // ...
    }
}()

解决方案是将[unowned self]仅放在最顶层的块上。对于块内的块,似乎对self的无主参考是自动处理的。

当然,我只能通过@ Maxwell的回答找出麻烦的文件才能找到这个错误:https://stackoverflow.com/a/26848000/855680

答案 11 :(得分:0)

我也遇到了这个错误。我按照@Maxwell的建议在终端运行了命令,发现错误发生在我的GameViewController.swift文件中。稍微挖掘一下,发现它不喜欢某些自动生成的代码或代码与Xcode中的某个设置冲突

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {

    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return .AllButUpsideDown
    } else {
        return .All
    }
}

一旦删除此块,错误就会消失。

答案 12 :(得分:0)

在我的情况下,Xcode因为以下行而给出错误:

if UI_USER_INTERFACE_IDIOM() ==  UIUserInterfaceIdiom.Phone {


}else {

}

为了解决我已经定义的错误:

enum UIUserInterfaceIdiom : Int {
    case Unspecified
    case Phone // iPhone and iPod touch style UI
    case Pad // iPad style UI
}

然后我就像使用它一样:

 if UIDevice.currentDevice().userInterfaceIdiom == .Phone {

}
祝你好运!

答案 13 :(得分:0)

在Xcode 6.4中编译此Swift 2.0语法时遇到此错误:

print(string, appendNewline: true);

返回Xcode 7,错误消失。

答案 14 :(得分:0)

Maxwell的解决方案为您提供了最接近的提示。

答案 15 :(得分:0)

按照@ maxvel的建议,我知道了 max()和min()函数无法在发布模式下编译。我用我自己的函数替换它,如下所示。

//Swift compiler seems to failing to compile default min and max functions in release 
//mode hence writing my own
//
func maximum<T: Comparable> (one: T, other: T) -> T {
    if one > other {
        return one
    }
    else {
        return other
    }
}

func minimum<T: Comparable> (one: T, other: T) -> T {
    if one < other {
        return one
    }
    else {
        return other
    }
}

答案 16 :(得分:0)

在这里添加我的案例。每当我用[unowned self]标记闭包时,我都会得到描述的错误,但是从不在闭包本身中引用self。

例如:

        request.startWithSuccess({ [unowned self] (req: CBRequest!, object: AnyObject!) -> Void in

            if let result = object["result"] as? [NSObject: AnyObject]
            {
                popup.type = result["email"] == nil ? AuthPopupType.Signup : AuthPopupType.Login
            }
            else
            {
                println("WARNING: Malformed response for kCBCheckUniquenesPath request.")
            }

            }, failure: { (req: CBRequest!, err: NSError!) -> Void in

                println("ERROR: Failure response for kCBCheckUniquenesPath request.")
        })

答案 17 :(得分:0)

更改

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!  

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell

并对此类其他人做同样的事情

答案 18 :(得分:0)

我有以下代码显示Release中的构建错误。

if myValue > 5 { myValue = 5.0 }
if myValue < 0 { myValue = 0 }

在if语句之间添加else解决了问题:

if myValue > 5 { myValue = 5.0 }
else
if myValue < 0 { myValue = 0 }

演示:https://github.com/exchangegroup/build-error-demo

Xcode版本6.1(6A1052d)。在调试中构建正常。提交给Apple Bug Reporter的门票。

答案 19 :(得分:0)

转到文件夹:Users / user / Library / Developer / Xcode / DerivedData

并清除所有文件,

然后清理并分析,

这对我有用。

答案 20 :(得分:-2)

我认为真正的问题是错误太多,所以编译只会告诉你一个混乱的错误代码。

但您可以随时打开每个源代码文件,在那里您可以找到详细的错误信息和正确的建议。

祝你好运!