NSlog的前世今生

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,则是来自希腊语 λόγος(比例)和 ἀριθμός(数)。

如图
NSlog的前世今生_第1张图片

  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

你可能感兴趣的:(函数)