【问题标题】:Building success then "Thread 1: signal SIGABRT error" pops up构建成功然后弹出“线程 1:信号 SIGABRT 错误”
【发布时间】:2016-07-28 17:53:04
【问题描述】:

我正在初步构建计算器。目前,代码除了在用户点击时将数字和 Pi 打印到计算器的标签中之外什么都不做。

1) 车码

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var display: UILabel! = nil

    var userIsInTheMiddleOfTypeing = false

    @IBAction func touchDigit(_ sender: UIButton){
        let digit = sender.currentTitle!
        if userIsInTheMiddleOfTypeing {
            let textCurrentlyInDisplay = display.text!
            display.text = textCurrentlyInDisplay + digit
        } else {
            display.text = digit
        }

        userIsInTheMiddleOfTypeing = true
    }

    @IBAction func performOperation(_ sender: UIButton) {
        userIsInTheMiddleOfTypeing = false
        if let methematicalSymbol = sender.currentTitle {
            if methematicalSymbol == "π" {
                display.text = String(M_PI) // M_PI
            }
        }
    }      
}

2) 用户界面

touchDigit 功能链接到所有数字按钮,如下图所示。 displayUILableperformOperaton 是 PI 按钮

问题

当我构建代码时,Xcode首先告诉我构建成功,但是,我还没来得及做任何事情,就弹出了一个错误,如下所示

错误日志(从调试区复制)

2016-07-28 19:30:30.215343 Calculator[11671:208157] bundleid: com.Jeffery.Calculator, enable_level: 0, persist_level: 0, propagate_with_activity: 0
2016-07-28 19:30:30.218796 Calculator[11671:208157] Created DB, header sequence number = 260
2016-07-28 19:30:30.767300 Calculator[11671:208178] subsystem: com.apple.UIKit, category: HIDEvents, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
2016-07-28 19:30:31.022078 Calculator[11671:208157] Created DB, header sequence number = 260
2016-07-28 19:30:31.350380 Calculator[11671:208157] subsystem: com.apple.BaseBoard, category: MachPort, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
2016-07-28 19:30:31.388363 Calculator[11671:208159] subsystem: com.apple.FrontBoard, category: Common, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

【问题讨论】:

  • 也许可以从使用 if let 而不是 ! 开始。
  • @IBOutlet 弱变量显示:UILabel! = 无。为什么将其设置为零?
  • 您在最有趣的部分截断了日志 :( 下一行是异常的描述,在大多数情况下,它会告诉您您需要知道的一切。此外,设置异常是值得的断点 - developer.apple.com/library/ios/recipes/…
  • 如果问题已解决,请接受解决问题的答案,或发布您自己的答案。如果您有新问题,请发布一个新的、不同的 问题,但不要更改现有问题的含义。谢谢。
  • @EricD 好点,有道理。我会这样做的

标签: ios swift3 xcode8-beta3


【解决方案1】:

我认为这里有问题:'@IBOutlet weak var display: UILabel! = 无'。当您使用“显示”属性执行某些操作时,您尝试使用 nil 执行此操作。在声明属性后尝试删除'= nil'。或者你可以覆盖视图控制器的 init 方法,但对我来说,在这种情况下这是不好的方法。

【讨论】:

  • 嗨,我认为这是一个很好的观点。我删除了 nil 设置,也就是只有 UILable!。但是错误仍然存​​在(顺便说一句,请原谅我迟到的回复)
【解决方案2】:

我发现了我的错误,PI 按钮连接到 viewControler 有两个连接(我应该删除一个)。

【讨论】:

  • 为了将来参考,这里提到了 NSException 被抛出。此异常对象将包含您需要阅读的有价值的信息。尝试在使用 Xcode 时添加this breakpoint 以在它被抛出时看到它。
猜你喜欢
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多