让程序停在发生异常的地方——Xcode使用小技巧一则

昨晚偶然读到一篇文章,收获很大,不仅仅是技术上的,而且还发现,只有小孩子才去关注个人博客的主题、样式,大神只关注博文的质量和价值。 

本文给大家分享一个Xcode使用技巧。初学者可能会遇到这种情况,程序崩了,Xcode总是停在并高亮程序main函数中的代码。这样我们没办法看到真正抛出异常的地方,也就没办法愉快地解决问题了。

程序崩溃

对于一些异常(比如段错误等),可能这是合理的,但是有些时候从Xcode给出的提示来看,它明明知道是什么原因导致的crash!
* Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘* -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[3]’

为了解决这个问题,我们在Xcode中位所有异常设置一个断点即可。

在下图所示的位置上,添加一个断点,选择“Add Exception Breakpoint”,这时一个新的断点就会被创建
设置全局断点

编辑这个断点,设置其break的时机为“On Throw”

设置全局断电

再次运行会crash的程序,如果抛异常的地方是你自己写的代码,Xcode会在该处停住,但是如果抛异常的地方是在一些第三方库,由于它们已经被编译,可能Xcode不能精准的知道哪一行代码导致了exception。

最后照例送大家一句话。

每次仇恨一个东西,你就失去了向它学习的机会。

本文参考文献

xcode-doesnt-show-the-line-that-causes-a-crash

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你写一个简单的计算器程序。首先,打开 Xcode 创建一个新的 Single View App,在 Main.storyboard 中添加一个 Label 和 17 个 Button,其中包括数字 0-9,加减乘除和等于号。 然后,在 ViewController.swift 中添加以下代码: ``` class ViewController: UIViewController { @IBOutlet weak var displayLabel: UILabel! var firstNumber: Double = 0 var secondNumber: Double = 0 var operation: String = "" var shouldClearDisplay: Bool = false override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } @IBAction func numberButtonTapped(_ sender: UIButton) { if shouldClearDisplay { displayLabel.text = "" shouldClearDisplay = false } if let number = sender.titleLabel?.text { displayLabel.text! += number } } @IBAction func operationButtonTapped(_ sender: UIButton) { if let op = sender.titleLabel?.text { operation = op firstNumber = Double(displayLabel.text!)! shouldClearDisplay = true } } @IBAction func equalsButtonTapped(_ sender: UIButton) { secondNumber = Double(displayLabel.text!)! var result: Double = 0 switch operation { case "+": result = firstNumber + secondNumber case "-": result = firstNumber - secondNumber case "×": result = firstNumber * secondNumber case "÷": result = firstNumber / secondNumber default: break } displayLabel.text = "\(result)" shouldClearDisplay = true } @IBAction func clearButtonTapped(_ sender: UIButton) { displayLabel.text = "" firstNumber = 0 secondNumber = 0 operation = "" } } ``` 这个计算器程序使用了基本的数学运算,包括加、减、乘、除和清空操作。当用户点击数字按钮时,数字将显示在 Label 上。而当用户点击操作按钮时,第一个数字将保存下来,并且等于号将执行所选择的操作并显示结果。最后,当用户点击清空按钮时,所有的数字和操作都将被清空。 这是一个简单的计算器程序,你可以根据自己的需要进行扩展和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值