NSlog的前世今生

OC中NSlog探究

NS

NS 是保留的NeXTSTEP 80年代末的Unix, 現在MacOS沿用當時的庫(legacy code),所以對應的函數名也保留以NS開頭。

log

log不是縮寫,就是 log。
log 本意原木(語源可能是古諾爾斯語 lág),後來引申爲船隻航行用來測速的 chip log 測程板,長這樣:
log
在航行的時候把 chip log 拋下,chip log 的阻力很大,便會懸浮在水中,這樣通過測量一段時間內繩子伸出的長度就可以測量航速(航速單位節 knot 也是這麼來的)。而利用航速測出的航行日誌則會寫在 logbook 上。
後來,航海中的 log 就被擴展到了更多的領域,表示記錄和日誌了。
至於 logarithm,則是來自希臘語 λόγος(比例)和 ἀριθμός(數)。

如圖
航海日誌

  1. 熟悉 Unix 以及衍生系統的人都明白,log 是用來記錄所有類型 “輸出” 的文本文件(也有不是文本的 log,比如 pf 的默認輸出就不是純文本)。
  2. 談到 “輸出” 的時候,我們一般會想到四種類型的輸出:標準輸出(stdout),錯誤輸出(stderr),內核標準/錯誤輸出(在控制檯會以高亮顯示)。
  3. log 和 “輸出” 的明顯區別就是,前者帶時間戳(基本上是 log 帶會帶),而後者未必帶,或者說一般情況下都不帶。
    4。 “輸出” 可以轉化爲 log(可以自己處理,也可以通過系統自動處理)

所以從以上四點來看 NSLog 卻是可以叫 log,因爲包含了時間戳;也可以是 “輸出”,因爲 NSLog 會把參數內容輸出到 “標準輸出”,運行相關 Objective C 程序後可以直接看見。

最後,NSLog 之所以用來做 “輸出” 函數名,是大家的誤解。其實 NSLog 就是實實在在用來 log 的,給你用來 “輸出” 只是一個副作用;因爲 Objective C 就是用來寫 GUI 的語言,不是給你寫程序在控制檯下輸出什麼東西的(雖然也可以做到這一點)。

最近纔開始往github上放東西 在公司寫的又不能放= = 大家姑且看看吧

github地址: https://github.com/FuThD

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章