在第一次接觸一個沒學過的程式語言時,我們多半可以看到會以「Hello, world!」作為開頭;
而你第一個所使用的 method,也很有可能就是印出東西相關的。
我在這邊寫的是 print,可能在別的語言並不是這個詞,是 printf 或是 console.log() 之類,
但這邊(或是這整個網站XD)就以 Swift 為主。
NSLog v.s print
有接觸過 iOS 開發的人,你可能也會看過別人使用 NSLog,而這邊就解釋一下兩者的差異:
NSLog
它是屬於 Fundation 的一個 function:
- 會加上 timestamp
- 會加上 identifier
- 會印在 device console
- 會花較多一些些的效能,所以會比較慢一些(因為前兩者)
- 會印在 debugger console
所以,若你只是需要記錄在 debugger console 的話,則建議就使用 print 就好。
開始使用
為了瞭解程式的執行內容,我們便開始在一些地方加上 print 的功能,像是
https://gist.github.com/ArchieR7/1d0bb6b3773fe358b058c6c3829610db
這樣就可以在 debugger console 那看到程式目前是進到哪個判斷式裡頭,
不過他大概就很簡略地顯示
a 等於 1
只能透過 print 的訊息來判斷是在哪,發生什麼事;
如果我們只是印出各種 print(error),就會比較難知道是誰發生了什麼事。
在輸出時加上檔案名稱及 function 和列數
在 Swift 裡頭,我們可以寫 #file #function #line 來取得相關資訊,並且簡單地分類:
https://gist.github.com/ArchieR7/c3ad7c0d8b10c5c7a6d7ed6114eb6ffe
我個人習慣分成 Debug、Warn、Info、Error,
- Debug:為了開發需要看到的資訊
- Warn:不應該執行到的警告,但不會造成 Crash 的程度
- Info:像是網路回傳的資訊內容
- Error:就⋯⋯紀錄 Error 的內容XDD
這樣就可以在 debugger console 看到比較詳細的內容。
(我沒有放 function name,有需要的記得要以參數的方式帶上)