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() 的類的更多資訊,因此它在除錯類本身時更有用。