【问题标题】:Swift error : signal SIGABRT how to solve itSwift 错误:信号 SIGABRT 如何解决它
【发布时间】:2017-09-18 16:19:03
【问题描述】:

我只是 Swift 编码的初学者。我的想法很简单,就是一个有两个按钮的应用程序。单击时,文本字段将更改其文本。 在 Main.StoryBoard 中,我添加了一个文本字段和两个按钮。 在 ViewController.swift 文件中。我是这样写的:

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var textfield: UITextField!
    @IBOutlet weak var button: UIButton!
    @IBOutlet weak var button2: UIButton!

    @IBAction func action1(_ sender: UIButton) {
        textfield.text="you just clicked on button1"
    }
    @IBAction func action2(_ sender: UIButton) {
        textfield.text="you just clicked on button2"
    }
}

应该没问题。但是,会出现一个错误,显示:

线程1:信号SIGABRT

在文件 AppDelegate.swift 行中:

class AppDelegate: UIResponder, UIApplicationDelegate

我的代码有什么问题?

【问题讨论】:

  • 您没有正确连接插座。
  • 我试过但没能解决。你是什​​么意思?对于代码。如何用相同的代码识别两个不同的按钮?
  • 您是否将插座连接到按钮然后更改插座名称?
  • 一个 UIView 对象也可能有一个旧的连接。也许尝试通过 Ctrl+Click 来浏览它们中的每一个以显示它们的连接或查看右侧的连接面板。仔细检查它们仅在必要时连接

标签: ios swift


【解决方案1】:

每当您的插座断开连接时,您都会收到 SIGABRT 错误。单击情节提要中的视图控制器,然后转到侧面板中的连接(箭头符号)。看看那里是否有额外的插座、重复的插座或未连接的额外插座。如果不是这样,那么您可能没有将您的插座正确连接到您的代码。

请记住,当您尝试调用不存在的插座(按钮、视图、文本字段等)时会发生 SIGABRT。

【讨论】:

  • 感谢您的帮助。我通过重新创建一个新的按钮项解决了这个问题,这意味着插座以前是错误的。有什么方法可以查看所有插座连接吗?
  • 是的!转到您的故事板,找到您要查看其所有出口的视图控制器,然后单击其顶部的黄色徽标,该徽标显示圆圈内有一个正方形。然后转到右侧的侧面板,然后单击带有圆圈的箭头(右上角)。在那里你可以看到所有的出口和动作连接。
  • 在我打算制作 IBAction 时制作 IBOutlet 时得到了这个,并认为我删除了插座(我没有)
  • @RobertDundon 确保您删除代码中的插座,并在情节提要连接选项卡中删除,否则您将收到错误
  • 我在测试中遇到了这个问题,它似乎与storyboards/appdelegates 无关
【解决方案2】:

要解决问题,首先clean项目,然后重建

要清理项目,请转到 MenuBar: Product -> Clean

然后要重建项目,只需像往常一样单击“运行”按钮。

【讨论】:

    【解决方案3】:

    对我来说,这不是一个出口。我通过转到错误并阅读它所说的内容来解决问题。 (也是菜鸟..)

    这是错误:

    解决方案就在这里:

    只需在输出中向上滚动,就会显示错误。

    【讨论】:

    • 注意,还要检查代码中的拼写。调用dequeueReusableCell(withIdentifier: "cellIdentifier", for: indexPath)时,如果withIdentifier参数与Identifier属性不一样;那么,就会抛出这个错误。
    【解决方案4】:

    我遇到了同样的问题。我在情节提要中制作了一个按钮并将其连接到 ViewController,然后删除了该按钮。所以连接仍然存在,但按钮不存在,所以我得到了和你一样的错误。

    修复:

    转到连接检查器(故事板右上角的箭头),然后删除所有未使用的连接。

    【讨论】:

    • 非常感谢。它帮助我解决了这个问题!
    【解决方案5】:

    此类错误的常见原因是您可能更改了 IBOutlet 或 IBAction 的名称,您只需转到源代码即可检查。

    点击ma​​in.storyboard,然后选择open as 然后选择源代码

    源代码将打开

    然后检查是否有您更改的iboutlet或ibaction的名称,如果有则选择该部分并将其删除,然后重新创建iboutlet或ibaction。 这应该可以解决您的问题

    【讨论】:

      【解决方案6】:

      就我而言,没有任何日志。

      我的错误是将视图控制器推送到已经是导航堆栈一部分的导航堆栈中。

      【讨论】:

        【解决方案7】:

        在我的情况下,我没有收到错误,只是 AppDelegate 中的崩溃,我不得不取消选中下一个选项:OS_ACTIVITY_MODE 然后我可以在我的 .xib 文件中获得真正的崩溃原因

        希望这对你也有帮助:)

        【讨论】:

          【解决方案8】:

          如果您在 Xcode 10 中遇到此问题,则必须在构建之前进行清理。或者,切换到旧版构建系统。文件 -> 工作区设置... -> 构建系统:旧版构建系统。

          【讨论】:

            【解决方案9】:

            当函数只需要在主线程中执行时,有时也会发生这种情况,因此您可以通过将其分配给主线程来修复它,如下所示:-

            DispatchQueue.main.async{
              your code here
            }
            

            【讨论】:

              【解决方案10】:

              对我来说,这个错误是因为我有一个准备转场步骤不适用于正在完成的转场。

              长篇大论:

              override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
              
                      let gosetup = segue.destination as! Update
                      gosetup.wherefrom = updatestring
              
                  }
              

              当它只针对一个时,这是对所有 segue 进行的。所以我创建了一个布尔值并将 gosetup 放在其中。

              【讨论】:

                【解决方案11】:

                就我而言,我使用 RxSwift 执行搜索。

                我一直在 onNext 方法中广泛使用特定类的共享实例,这可能使其无法访问 (Mutex)。

                确保仅在绝对必要时谨慎处理此类情况。

                在我的例子中,我预先使用了几个变量来安全地(并且顺序地)存储共享实例的方法的返回值,并在 onNext 块中重用它们。

                【讨论】:

                  【解决方案12】:

                  我遇到了同样的问题。就我而言,我只是覆盖了文件

                  GoogleService-Info.plist
                  

                  在那条路上:

                  Platform\ios\YOUR_APP_NAME\Resources\Resources
                  

                  在我的情况下,文件没有数据。

                  【讨论】:

                    【解决方案13】:

                    这是一个非常常见的错误,可能由于多种原因而发生。最常见的情况是连接到情节提要中的视图控制器的 IBOUTLET/IBACTION 从 swift 文件中删除,而不是从情节提要中删除。如果不是这种情况,请使用底部工具栏中的日志找出错误所在并进行诊断。您可以使用断点和调试来帮助您找到错误。

                    要了解如何修复错误,请使用我在 Google 上找到的这篇文章:https://rayaans.com/fixing-the-notorious-sigabrt-error-in-xcode

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2020-05-10
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2018-07-06
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多