黑马程序员技术交流社区

标题: C语言的pritnf()与OC中的NSLog()有什么区别? [打印本页]

作者: Moebius    时间: 2014-7-15 00:16
标题: C语言的pritnf()与OC中的NSLog()有什么区别?
本帖最后由 Moebius 于 2014-7-15 17:51 编辑

C语言的pritnf()与OC中的NSLog()有什么区别? 功能感觉都一样,但是为何要在OC中另外设置一个函数来代替pritnf()呢?是不是有什么特别的地方?
作者: fantacyleo    时间: 2014-7-15 00:25
怎么会功能一样。。。至少NSLog会打印出时间信息吧,会自动换行吧,能用%@吧
作者: 云霄之上    时间: 2014-7-15 00:43
NSLog完全具备printf的功能,而printf只能打印纯C语言的变量,不能打印一些NSObject类型的对象
作者: 温天恩    时间: 2014-7-15 08:20
NSLog打印C语言中定义的字符串时,不能打印中文字符,此时会跳过打印。
作者: 追马    时间: 2014-7-15 08:29
1.NSLog会自己加上换行符

2.NSLog在Debug下会写到system.log中

3.NSLog会自动加上时间和进程信息.

4.NSLog支持%@去打印一个对象类型,当使用%@时,它会给对象发送消息description,所以如果你组合了一个新的类,你可以通过给自己重载description来实现打印DEBUG


作者: 小海    时间: 2014-7-15 17:21
楼上的都说的很清楚了,NSLog大有用处
作者: 天空总是很蓝    时间: 2014-11-21 11:24
NSLog默认输出是带时间、进程名、换行等其他额外信息的
作者: lixj1991    时间: 2015-9-8 19:59
在黑马的基础班的视频讲解中,其实老师建议NSLog和printf穿插使用。
printf
优点:输出干净整洁,可以高度自定义格式。
缺点:printf本身是c语言的语法,所以输出只限于C语言中规定的格式,当需要输出对象类型的时候,就不能使用printf了。
NSLog
优点:支持%@格式的输出,并在调试时在系统日志中产生相关的记录,同时,使用StringWithFormat方法可以实现和printf类似的格式输出设定。
缺点:它会在输出希望的内容之前,输出一串和输出对象有关的信息,但是很多时候我们并不想看到,会影响程序的美观,ios基础班的视频课程中说,NSLog不能省略这段文字的输出。

因为NSLog会造成输出的显示比较乱,当程序需要输出类似矩阵这样的整齐的输出的时候,可能就不适合使用NSLog了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2