由于信号命令失败:中止陷阱:6

时间:2015-06-09 06:52:35

标签: swift xcode

从Xcode 7和Swift 2.0开始,我得到上面的错误,如下面的截图所示:

screenshot of error log

我不知道它来自何处,清理和删除派生数据不起作用。

其他人遇到此问题?

项目设置:

project settings

目标设定:

target settings

35 个答案:

答案 0 :(得分:6)

我在保护构造中使用相同的常量名称时遇到了这个问题

let activityVC = ...
        
guard let activityVC = activityVC else { return }

但是 xcode 没有向我显示这一行的任何警告。

答案 1 :(得分:5)

我对所有Xcode 6.3项目都有同样的问题,我在Xcode 7.0中打开。 我创建了一个新项目,复制了我的所有源文件和资源,一切正常,没有编译错误。 我认为这与项目设置有关。 我关闭了Swift编译优化到"无"陷阱6消失了。也许还有其他设置,这也会产生麻烦,但对我来说这就是。

答案 2 :(得分:4)

转到项目构建 settings -> Swift Compiler - code generation -> Optimization Level - >对于Debug&发布选择选项“快速,单文件优化[-O]

enter image description here

答案 3 :(得分:2)

就我而言

错误

override func observeValueForKeyPath(keyPath: (String!)?, ofObject object: (AnyObject!)?, change: ([NSObject : AnyObject]!)?, context: UnsafeMutablePointer<Void>)

确定

override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [NSObject : AnyObject]?, context: UnsafeMutablePointer<Void>)

答案 4 :(得分:1)

确保没有在类扩展中实现私有协议。拥有私有协议的大部分时间都是很奇怪的,但并非必需,这取决于您希望封装的内容。

在同一文件中类似:

class C: ... {
}

extension C: P {
}

private protocol P: class {
}

这样做,您一定会得到Command failed due to signal: Abort trap: 6

相反,从协议中删除private修饰符,即可解决错误。

答案 5 :(得分:1)

这对我有用,因此请尝试一下。在将代码从swift 3转换为swift 4时出现了此错误。

只需转到Project> Target> Build设置并搜索“ Swift Compiler-Code Generation”,然后将“优化级别”设置为“ No Optimazation [-Onone]”。

答案 6 :(得分:1)

我这样做的时候收到了这个:

protocol ProtocolA {
    associatedtype BType: ProtocolB
}

protocol ProtocolB {
    associatedtype AType: ProtocolA
}

答案 7 :(得分:1)

就我而言,

编译器会给我一条消息:

Incorrect number of arguments passed to called function!
%4 = call %swift.type* @_T015SimplifiedCoder6StructVMa() #1, !dbg !3112
<unknown>:0: error: fatal error encountered during compilation; please
file a bug report with your project and the crash log
<unknown>:0: note: Broken function found, compilation aborted!

但我意识到我错过了一个默认的通用参数:

class Class<K> {
    init<T: Protocol>(_ value: T) where T.Key == K {}
}

protocol Protocol {
    associatedtype Key
    static func getClass<NewKey>(_: NewKey.Type) -> Class<NewKey>
}

struct Struct<K>: Protocol {

    typealias Key = K

    static func getClass<NewKey>(_: NewKey.Type) -> Class<NewKey> {
        let _self = Struct<NewKey>()
        return Class(_self)
    }
}

protocol CanGetClass {
    associatedtype StructType: Protocol
}

extension CanGetClass {
    func getClass<Key>(_: Key.Type) -> Class<Key> {
        return StructType.getClass(Key.self)
    }
}

struct R: CanGetClass {
    typealias StructType = Struct
}

改变了:

typealias StructType = Struct

到:

typealias StructType = Struct<Int>

CanGetClass的扩展试图在不完整的类型上调用getClass。

答案 8 :(得分:1)

我在XCode 7 Beta 5上也遇到了这个错误。在我清理了构建之后,我又得到了另一个错误,说我的一个类不符合我刚改变的协议。解决问题后,它会构建。我所做的协议更改是将方法的两个参数类型从Int更改为Int32

答案 9 :(得分:0)

我能够通过更改桥接头来解决它。就我而言,添加一个换行符就足够了。非常奇怪的错误。

答案 10 :(得分:0)

Xcode 10.2.1中仍然存在此问题。 清理构建文件夹后,错误消失了。

答案 11 :(得分:0)

对我来说,以下陈述会导致错误。

let dict = mainDict as [String:String]

通过force unwraps修复问题

let dict = mainDict as! [String:String]

与编译器无关。这只是类型转换问题,Apple应该给出适当的描述,而不是给出编译器错误

答案 12 :(得分:0)

我的情况是Swift 5.1,Xcode 10.3(10G8)

当嵌套函数使用外部函数的参数作为默认参数时,代码使Swift崩溃。

例如

func foo(duration: TimeInterval) {
    func bar(duration: TimeInterval = duration) {
    }
}

我希望这会有所帮助。

答案 13 :(得分:0)

对我来说,这是MD5.swift问题

您要做的就是在项目中甚至在Pod中搜索文件名“ MD5.swift”

并在此处用此文件替换所有内容

https://github.com/onmyway133/SwiftHash/blob/master/Sources/MD5.swift

答案 14 :(得分:0)

在我的情况下,搜索

[String: String]

替换为

[String: Any]

答案 15 :(得分:0)

我通过转到Xcode->首选项->位置->将Relative选项设置为“派生数据”来修复它。

Setting Derived Data

答案 16 :(得分:0)

尝试运行测试时出现此错误。 为了解决这个问题,我将此脚本放入了终端:

rm -rf ~/Library/Developer/Xcode/DerivedData

删除派生数据解决了该问题

答案 17 :(得分:0)

在我的案例中,“异常终止陷阱:6”的问题是由设置超类中定义的@Published属性的值引起的,该超类继承自ObservableObject(Swift 5)。

错误:

class MySuperClass : ObservableObject {
   @Published var myProperty : Int = 0
}

class MySubClass : MySuperClass {
   func someFunc() {
     myProperty = 1
   }
}

好:

class MySuperClass : ObservableObject {
   @Published var myProperty : Int = 0

   func setMyProperty(value: Int) {
      myProperty = value
   }
}

class MySubClass : MySuperClass {
   func someFunc() {
     setMyProperty(value: 1) 
   }
}

答案 18 :(得分:0)

在Xcode 9.3中,我重新安装了特定的Pod,在其中显示了警告,并再次清除了派生数据。它对我有用:)

答案 19 :(得分:0)

在Xcode 11和Swift 5中:转到项目的Build settings-> Swift Compiler-代码生成-> Optimization Level->对于Debug&Release,选择选项“ No Optimaiztion [-Onone]

enter image description here

答案 20 :(得分:0)

在我的情况下,重命名init方法的几个参数,这是一个协议无法编译。我一个接一个地解决它,每次改变后再次编译。

答案 21 :(得分:0)

我没有尝试其他解决方案。 对于此设置,我遇到了这个问题:

func speacialAdd(_ num1: Int, to num2: Int){
    func specialMultiply(_ digit1: Int, with digit2: Int = num2){ // SOURCE OF PROBLEM
        print(digit2)
        print(digit1)
    }

    specialMultiply(5)
}

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        print(speacialAdd(5, to: 6))
    }
}

此行是问题的根源。将其默认为参数似乎不适用于嵌套函数

func specialMultiply(_ digit1: Int, with digit2: Int = num2) // ERROR

解决方案是:

func specialMultiply(_ digit1: Int, with digit2: Int) // OK
func specialMultiply(_ digit1: Int, with digit2: Int = 6) // OK

FWIW我实际上首先是在操场上写的,却遇到了另一个错误:

  

操场执行失败:

     

错误:无法查找符号:
  __T013__lldb_expr_111speacialAddySi_Si2totF4num2L_Sifau

答案 22 :(得分:0)

我遇到了同样的问题,我发现问题是我在阅读了一篇关于“如何加速构建”的文章后将构建系统更改为“新构建系统”(这是文章btw {{3 }})

回到标准构建系统

  1. 要启用新的构建系统,请转到文件→项目设置(或工作区设置)。
  2. 将构建系统更改为标准构建系统
  3. here

    希望它可以帮助别人,不要浪费时间试图找出为什么这不起作用!

答案 23 :(得分:0)

我通过以下步骤解决了这个问题:

  1. 运行&#39; pod deintegrate&#39;

  2. Makesure podfile如下:     平台:ios,&#39; 8.0&#39;     use_frameworks!

  3. 运行&#39; pod install&#39;

答案 24 :(得分:0)

&lt; p&gt;对我来说导致此错误的原因是:&lt; / p&gt; &lt; p&gt;我创建了一个文件来在UIView上创建扩展。在这个文件中,我创建了一个名为&lt; code&gt; Foo&lt; / code&gt;的私有协议。&lt; / p&gt; &lt; p&gt;然后我做了:&lt; / p&gt; &lt; p&gt;&lt; code&gt;扩展名UIView:Foo&lt; / code&gt;&lt; / p&gt; &lt; p&gt;从协议中删除私有使得错误消失了。 &LT; / p为H. &lt; p&gt;我猜这可能是一个错误。编译器应该警告我们这个问题。它警告我们的方式相同,我们不能在类型中添加私有一致性,它应该告诉我们一致性应该使用&#34; public / internal&#34; 。协议&LT; / p为H.

答案 25 :(得分:0)

就我而言,private struct Constantsclass A都声明了extension A

可能它应该是一个错误,但它没有。

答案 26 :(得分:0)

在Failable初始化程序中使用do-try-catch时收到此消息:

public init?() {
    do {
        ...
        super.init(superParam: try getParamForSuper())
        ...
    } catch {
        ...
    }
}

将try调用移动到它自己的局部变量时,编译成功了:

public init?() {
    do {
        ...
        let superParam = try getParamForSuper()
        super.init(superParam: superParam)
        ...
    } catch {
        ...
    }
}

答案 27 :(得分:0)

对我来说..我修改了@objc函数的内容,如下所示:

之前:

        @objc func didConnectWithSession() {
           context!.stream.disconnectAfterSending()
        }

后:

        @objc func didConnectWithSession() {
           //context!.stream.disconnectAfterSending()
        }

这导致错误。我通过删除整个功能来解决。

答案 28 :(得分:0)

在我的情况下,我有@objc协议和可选方法,当我在swift类中调用它的方法时,我得到了这个错误,在从协议中的函数中删除可选关键字后,错误就消失了。

之前(有错误):

@objc protocol SomeDelegate:NSObjectProtocol{

    optional func someDelegateMethod()
}

class MySwiftClass{
    func notifyMyDelegate(){
        mydelegate?.someDelegateMethod?() //this line caused the error
    }
}

后:

@objc protocol SomeDelegate:NSObjectProtocol{

    func someDelegateMethod()
}

class MySwiftClass{
    func notifyMyDelegate(){
        mydelegate?.someDelegateMethod()
    }
}

答案 29 :(得分:0)

我设法通过在目标(而不是项目)设置中的“Swift编译器 - 代码生成”菜单下将优化级别设置为“无”来构建我的项目。请参见下面的屏幕截图...

enter image description here

这不应该是一个永久的解决方案,因为它比ipa的大小增加了一倍多。当Xcode 7退出测试版时,应该可以重新开启优化。

答案 30 :(得分:0)

这就是造成我错误的原因。

在:

    for (key,value) in hash{
        count += value.count
    }

后:

    for (_,value) in hash{
        count += value.count
    }

它并不喜欢钥匙从未在任何地方使用过。我不知道为什么它会导致构建失败。

答案 31 :(得分:0)

好吧,在我的情况下,这是因为我有一个嵌套在泛型类中的枚举。现在,奇怪的是,当我隔离问题(进入BaseDao2)时,编译器告诉我正确的错误,但在我真正的BaseDao实现中(它有更多的东西),它会抛出&#34;陷阱6&#34 ;。

Type 'DaoError2' nested in generic type 'BaseDao2' is not allowed

当我有这个时:

class BaseDao2<T>: InjectRestSession{

    enum DaoError2: ErrorType{
        case FAILED_RESPONSE(String)
        case INVALID_RESULT(String)
        case FAIL_TO_LIST, FAIL_TO_GET
    }

    func get() -> T?{
        return nil
    }
}

无论如何,在我的情况下,我将DaoError移出BaseDao并编译所有内容。无论如何,我的感觉是&#34;陷阱6&#34;是什么东西无法编译和编译器混淆。从一个简单的案例开始,并添加您认为可能导致问题的内容可以帮助您通过获得正确的编译错误来识别问题。换句话说,你必须对swift编译器保持温和。

答案 32 :(得分:0)

我能够使用在Xcode 7.0 beta(7A120f)中创建的全新项目简单而一致地重现这一点。请注意,问题可能比示例更广泛,但对于我来说,只需向新项目添加一行就可以100%重现。此问题似乎也仅适用于iOS,而不是OS X,至少对于此示例。已向Apple提交了错误报告#21376523。

  1. 在Xcode 7.0(7A120f)中创建一个全新的项目。类型是“游戏”,语言是“Swift”,游戏技术是“SceneKit”。

  2. 使用默认设置构建并运行。项目在模拟器中构建并运行良好(您将看到默认的旋转3D飞船模型)。

  3. 将单个SCNVector3属性添加到GameViewController.swift,如下所示:

    class GameViewController: UIViewController {  
      var p = SCNVector3Zero  
    
  4. - &GT;产生“中止陷阱:6”。项目将不再编译。

    1. 将常量更改为空初始值设定项。

      class GameViewController: UIViewController {  
        var p = SCNVector3()  
      
    2. - &GT;同样的问题,“中止陷阱:6”

      1. 删除属性,恢复到干净的项目状态。
      2. - &GT; “中止陷阱:6”消失,项目再次编译并运行。

        1. 将“var”更改为“let”。

          class GameViewController: UIViewController {  
            let p = SCNVector3Zero
          
        2. - &gt;编译并运行。

          1. 将属性类型更改为SCNVector4而不是SCNVector3。

            class GameViewController: UIViewController {  
              var p = SCNVector4Zero
            
          2. - &gt;编译并运行。

            编辑:如果由于使用浮动3矢量类型(例如SCNVector3)而得到“中止陷阱:6”,则此问题在Xcode 7.0 beta-2(7A121l)中得到修复。从发行说明:

              

            •调用C或Objective-C函数时编译器崩溃   SIMD float3参数已得到修复。 (21294916)

答案 33 :(得分:0)

就我而言,将函数中的参数值设置为nil会导致错误。

在:

public func comparableValidator<T: Comparable>(minValue : T? = nil, maxValue : T? = nil, value: T) -> Void {
    if let min = minValue {
        _assertFunc(min <= value, "\(value) must be at least \(min)")
    }

    if let max = maxValue {
        _assertFunc(max >= value, "\(value) must be at most \(max)")
    }
}

后:

public func comparableValidator<T: Comparable>(minValue : T?, maxValue : T?, value: T) -> Void {
    if let min = minValue {
        _assertFunc(min <= value, "\(value) must be at least \(min)")
    }

    if let max = maxValue {
        _assertFunc(max >= value, "\(value) must be at most \(max)")
    }
}

答案 34 :(得分:-1)

我的问题出在线路上:

return ()

我删除了该行并解决了问题!