这里每天共享一个 iOS 的新知识,快来关注我吧

前言

Xcode 支持许多不同类型的断点,但咱们最常用的是行断点。行断点能够通过单击源代码编辑器中要中止的行来设置,比如我想让程序断在第 16 行,只需要在行数上点击一下:

你知道 Xcode 支持设置

大多数时分能够满意咱们的需求,但有时它不行精密。因此在 Xcode 13 中,苹果又增加了一种新的断点,叫列断点。

Column Breakpoints

列断点顾名思义,Xcode 允许咱们在某一列打上断点,稍后会讲具体如何操作,先来看看列断点处理了什么问题。

在上图中,咱们把断点设置在 16 行,这一行会履行两个函数,即:addOnedouble,默许情况下,断点会断在 addOne 函数上:

你知道 Xcode 支持设置

能够看到在 addOne 函数的下方有条绿色的线,这时分假如咱们想让程序往下走一步,能够点击下边调试区域的 Step into 按钮:

你知道 Xcode 支持设置

点击一下,断点进入了 addOne 办法中:

你知道 Xcode 支持设置

持续点击几下这个按钮,断点会进入 double 办法中,但有的时分咱们的函数表达式十分长,这样一步步操作过于繁琐,十分浪费时间,假如想直接能够断在 double 办法上,应该怎样操作呢?这时分就需要用到列断点了。

你知道 Xcode 支持设置

列断点的运用

从 Xcode 13 开始,咱们能够直接在 double 办法上设置列断点。按住 Command 键单击该办法会显示代码操作菜单,然后点击 Create Column Breakpoint 按钮即可设置列断点:

你知道 Xcode 支持设置

设置列断点后,会在这个办法上看到一个小尖头,表明断点设置成功:

你知道 Xcode 支持设置

这时分再履行程序,能够看到程序直接断在了 double 函数上(绿色的下划线)

你知道 Xcode 支持设置

列断点的操作

列断点和行断点的操作几乎是一样的,能够通过双击来引发编辑页面:

你知道 Xcode 支持设置

能够点击一下,禁用/启用断点,禁用之后会变成半透明淡色:

你知道 Xcode 支持设置

也能够通过鼠标拖拽移除。

其他的运用场景

当一行代码中有多个高阶函数时,运用列断点调试十分有用,举个比如:

let numbers = [1, 2, 3, 4]
let result = numbers.filter { $0.isMultiple(of: 2) }.map { $0 * $0 }.map { String($0) }
print(result)
// ["4", "16"]

上边的代码中,先用 filter 函数把偶数过滤出来,在用 map 函数把每个数字和自己相乘得出平方,最终再用一个 map 函数把数字结果转成字符串。

这行代码,假如想知道最终一个 map 是怎样履行的,就能够在最终一个 $0 上打上一个列断点:

你知道 Xcode 支持设置

然后履行程序,就能够看到,程序直接断在了 $0 上,在控制台,也能够直观的看到每次履行 $0 的情况:

你知道 Xcode 支持设置

这里每天共享一个 iOS 的新知识,快来关注我吧

本文同步自微信公众号 “iOS新知”,每天按时共享一个新知识,这里只是同步,想要及时学到就来关注我吧!