构建成功然后弹出“线程 1:信号 SIGABRT 错误”
Posted
技术标签:
【中文标题】构建成功然后弹出“线程 1:信号 SIGABRT 错误”【英文标题】:Building success then "Thread 1: signal SIGABRT error" pops up 【发布时间】: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 功能链接到所有数字按钮,如下图所示。 display 是 UILable
而 performOperaton 是 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 好点,有道理。我会这样做的
【参考方案1】:
我认为这里有问题:'@IBOutlet weak var display: UILabel! = 无'。当您使用“显示”属性执行某些操作时,您尝试使用 nil 执行此操作。在声明属性后尝试删除'= nil'。或者你可以覆盖视图控制器的 init 方法,但对我来说,在这种情况下这是不好的方法。
【讨论】:
嗨,我认为这是一个很好的观点。我删除了 nil 设置,也就是只有 UILable!。但是错误仍然存在(顺便说一句,请原谅我迟到的回复)【参考方案2】:我发现了我的错误,PI 按钮连接到 viewControler 有两个连接(我应该删除一个)。
【讨论】:
为了将来参考,这里提到了NSException
被抛出。此异常对象将包含您需要阅读的有价值的信息。尝试在使用 Xcode 时添加this breakpoint 以在它被抛出时看到它。以上是关于构建成功然后弹出“线程 1:信号 SIGABRT 错误”的主要内容,如果未能解决你的问题,请参考以下文章
调用 requestLocation() 时的“线程 1:信号 Sigabrt”