print() vs dump()

我们中的许多人都开始使用简单的 print() 进行调试。假设我们有这样一个类:

class Abc {
    let a = "aa"
    let b = "bb"
}

我们有一个 Abc 的实例如下:

let abc = Abc()

当我们在变量上运行 print() 时,输出为

App.Abc

dump() 输出

App.Abc #0
- a: "aa"
- b: "bb"

如图所示,dump() 输出整个类层次结构,而 print() 只输出类名。

因此,dump() 对 UI 调试特别有用

let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))

通过 dump(view),我们得到:

 - <UIView: 0x108a0cde0; frame = (0 0; 100 100); layer = <CALayer: 0x159340cb0>> #0
    - super: UIResponder
      - NSObject 

虽然 print(view) 我们得到:

<UIView: 0x108a0cde0; frame = (0 0; 100 100); layer = <CALayer: 0x159340cb0>>

有关 dump() 的类的更多信息,因此它在调试类本身时更有用。