OC中NSlog探究
NS
NS 是保留的NeXTSTEP 80年代末的Unix, 現在MacOS沿用當時的庫(legacy code),所以對應的函數名也保留以NS開頭。
log
log不是縮寫,就是 log。
log 本意原木(語源可能是古諾爾斯語 lág),後來引申爲船隻航行用來測速的 chip log 測程板,長這樣:
在航行的時候把 chip log 拋下,chip log 的阻力很大,便會懸浮在水中,這樣通過測量一段時間內繩子伸出的長度就可以測量航速(航速單位節 knot 也是這麼來的)。而利用航速測出的航行日誌則會寫在 logbook 上。
後來,航海中的 log 就被擴展到了更多的領域,表示記錄和日誌了。
至於 logarithm,則是來自希臘語 λόγος(比例)和 ἀριθμός(數)。
如圖
- 熟悉 Unix 以及衍生系統的人都明白,log 是用來記錄所有類型 “輸出” 的文本文件(也有不是文本的 log,比如 pf 的默認輸出就不是純文本)。
- 談到 “輸出” 的時候,我們一般會想到四種類型的輸出:標準輸出(stdout),錯誤輸出(stderr),內核標準/錯誤輸出(在控制檯會以高亮顯示)。
- log 和 “輸出” 的明顯區別就是,前者帶時間戳(基本上是 log 帶會帶),而後者未必帶,或者說一般情況下都不帶。
4。 “輸出” 可以轉化爲 log(可以自己處理,也可以通過系統自動處理)
所以從以上四點來看 NSLog 卻是可以叫 log,因爲包含了時間戳;也可以是 “輸出”,因爲 NSLog 會把參數內容輸出到 “標準輸出”,運行相關 Objective C 程序後可以直接看見。
最後,NSLog 之所以用來做 “輸出” 函數名,是大家的誤解。其實 NSLog 就是實實在在用來 log 的,給你用來 “輸出” 只是一個副作用;因爲 Objective C 就是用來寫 GUI 的語言,不是給你寫程序在控制檯下輸出什麼東西的(雖然也可以做到這一點)。
最近纔開始往github上放東西 在公司寫的又不能放= = 大家姑且看看吧
github地址: https://github.com/FuThD