打印 vs NSLog

在 swift 中,我们可以使用 print()NSLog() 函数在 Xcode 控制台上打印一些东西。

但是 print()NSLog() 函数有很多不同之处,例如:

1 TimeStamp: NSLog() 将打印时间戳以及我们传递给它的字符串,但 print() 将不会打印时间戳。
例如

let array = [1, 2, 3, 4, 5]
print(array)
NSLog(array.description)

输出:

[1,2,3,4,5]
2017-05-31 13:14:38.582 ProjetName [2286:7473287] [1,2,3,4,5]

它还会打印 ProjectName 以及时间戳。

2 Only String: NSLog() 仅将 String 作为输入,但 print() 可以打印传递给它的任何类型的输入。
例如

let array = [1, 2, 3, 4, 5]
print(array) //prints [1, 2, 3, 4, 5]
NSLog(array) //error: Cannot convert value of type [Int] to expected argument type 'String'

3 性能:与 print() 功能相比,NSLog() 功能非常

4 同步: NSLog() 处理来自多线程环境的同时使用并打印输出而不重叠它。但是 print() 在处理输出时不会处理这样的情况和混乱。

5 设备控制台: NSLog() 也在设备控制台上输出,我们可以通过将设备连接到 Xcode 来查看此输出。print() 不会将输出打印到设备的控制台。