Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 由于信号:中止陷阱:6,命令失败_Swift_Xcode - Fatal编程技术网

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

Swift 由于信号:中止陷阱:6,命令失败,swift,xcode,Swift,Xcode,从Xcode 7和Swift 2.0开始,我得到了上面的错误,如这里显示的屏幕截图所示: 我不知道这是从哪里来的,清理和删除派生数据不起作用 还有其他人遇到这个问题吗 项目设置: 目标设置: 我在所有Xcode 6.3项目中都遇到了同样的问题,我是在Xcode 7.0中打开的。 我创建了一个新项目,复制了我所有的源文件和资源,所有的工作都没有这个编译器错误。 我认为这与项目设置有关。 我将Swift编译优化关闭为“无”,陷阱6消失了。也许还有其他的设置也会产生问题,但对我来说就是这样 错误

从Xcode 7和Swift 2.0开始,我得到了上面的错误,如这里显示的屏幕截图所示:

我不知道这是从哪里来的,清理和删除派生数据不起作用

还有其他人遇到这个问题吗

项目设置:

目标设置:


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

错误

覆盖函数observeValueForKeyPath(keyPath:(字符串!),对象:(AnyObject!)?,更改:([NSObject:AnyObject]!)?,上下文:UnsafeMutablePointer)

重写函数observeValueForKeyPath(键路径:String?,对象对象:AnyObject?,更改:[NSObject:AnyObject]?,上下文:UnsafeMutablePointer)

在我的例子中,是将函数中的参数值设置为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)")
    }
}
    for (key,value) in hash{
        count += value.count
    }
public func compariablevalidator(minValue:T?=nil,maxValue:T?=nil,value:T)->Void{
如果让min=minValue{
_assertFunc(最小值=值,“\(值)必须最多为\(最大值)”)
}
}
之后:

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)")
    }
}
    for (_,value) in hash{
        count += value.count
    }
public func compariablevalidator(minValue:T?,maxValue:T?,value:T)->Void{
如果让min=minValue{
_assertFunc(最小值=值,“\(值)必须最多为\(最大值)”)
}
}

我能够用Xcode 7.0 beta版(7A120f)中创建的全新项目简单而一致地再现这一点。请注意,这个问题可能比示例更广泛,但对我来说,只需在新项目中添加一行代码,这是100%可重复的。这个问题似乎也只适用于iOS,而不是OSX,至少在本例中是这样。已经向苹果公司提交了缺陷报告21376523

  • 在Xcode 7.0(7A120f)中创建一个全新的项目。类型是“游戏”,语言是“迅捷”,游戏技术是“场景”

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

  • 向GameViewController.swift添加单个SCInvector3属性,如下所示:

    class GameViewController: UIViewController {  
      var p = SCNVector3Zero  
    
  • -->产生“中止陷阱:6”。项目将不再编译

  • 将常量更改为空初始值设定项

    class GameViewController: UIViewController {  
      var p = SCNVector3()  
    
  • -->同样的问题,“中止陷阱:6”

  • 移除属性,恢复到干净的项目状态
  • -->“中止陷阱:6”消失,项目再次编译并运行

  • 将“var”更改为“let”

  • -->编译并运行

  • 将属性类型更改为SCNVector4而不是SCNVector3

    class GameViewController: UIViewController {  
      var p = SCNVector4Zero
    
  • -->编译并运行

    编辑:这个问题在Xcode 7.0 beta-2(7A121l)中得到了修复,如果您由于使用浮点3向量类型(如SCInvector3)而得到“中止陷阱:6”。从发行说明中:

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


    在我的例子中,这是因为我在泛型类中嵌套了一个枚举。现在,奇怪的是,当我将问题隔离到BaseDao2中时,编译器告诉了我正确的错误,但在我真正的BaseDao实现中(包含更多内容),它抛出了“陷阱6”

    当我有这个:

    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
        }
    }
    
    class BaseDao2:InjectRestSession{
    枚举DAORROR2:错误类型{
    案例失败\u响应(字符串)
    大小写无效\u结果(字符串)
    案例列表失败,获取失败
    }
    func get()->T{
    归零
    }
    }
    

    无论如何,在我的例子中,我将DAO错误从BaseDao和编译的所有内容中移出。无论如何,我的感觉是“陷阱6”是某些东西无法编译的东西,编译器感到困惑。从一个简单的案例开始,通过获得正确的编译错误,将您认为可能导致问题的原因添加回去,有助于识别问题。换句话说,您必须对swift编译器保持温和

    这就是我犯错误的原因

    之前:

    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)")
        }
    }
    
        for (key,value) in hash{
            count += value.count
        }
    
    之后:

    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)")
        }
    }
    
        for (_,value) in hash{
            count += value.count
        }
    

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

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


    这不应该是一个永久的解决方案,因为它使ipa的大小增加了一倍多。当Xcode 7从beta版出来时,应该可以重新打开优化功能。

    在我的例子中,我使用了带有可选方法的@objc协议,当我在swift类中调用它的方法时,我得到了那个错误,从协议中的函数中删除可选关键字后,错误就消失了

    之前(有错误):

    之后:

    @objc protocol SomeDelegate:NSObjectProtocol{
    
        func someDelegateMethod()
    }
    
    class MySwiftClass{
        func notifyMyDelegate(){
            mydelegate?.someDelegateMethod()
        }
    }
    
            @objc func didConnectWithSession() {
               //context!.stream.disconnectAfterSending()
            }
    

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

    之前:

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

    @objc protocol SomeDelegate:NSObjectProtocol{
    
        func someDelegateMethod()
    }
    
    class MySwiftClass{
        func notifyMyDelegate(){
            mydelegate?.someDelegateMethod()
        }
    }
    
            @objc func didConnectWithSession() {
               //context!.stream.disconnectAfterSending()
            }
    

    这导致了错误。我通过删除整个函数解决了这个问题。

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

    在一个失败的初始值设定项中使用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 {
            ...
        }
    }
    
    就我而言

    编译器会给我以下信息:

    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!
    
    致:

    typealias StructType=Struct
    

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

    我是在什么时候收到的:

    protocol ProtocolA {
        associatedtype BType: ProtocolB
    }
    
    protocol ProtocolB {
        associatedtype AType: ProtocolA
    }
    
    typealias StructType = Struct<Int>
    
    protocol ProtocolA {
        associatedtype BType: ProtocolB
    }
    
    protocol ProtocolB {
        associatedtype AType: ProtocolA
    }
    
    class C: ... {
    }
    
    extension C: P {
    }
    
    private protocol P: class {
    }
    
    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
    
    let dict = mainDict as [String:String]
    
    let dict = mainDict as! [String:String]
    
    let activityVC = ...
            
    guard let activityVC = activityVC else { return }