A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Moebius 于 2014-7-15 17:51 编辑

C语言的pritnf()与OC中的NSLog()有什么区别? 功能感觉都一样,但是为何要在OC中另外设置一个函数来代替pritnf()呢?是不是有什么特别的地方?

7 个回复

倒序浏览
怎么会功能一样。。。至少NSLog会打印出时间信息吧,会自动换行吧,能用%@吧
回复 使用道具 举报
NSLog完全具备printf的功能,而printf只能打印纯C语言的变量,不能打印一些NSObject类型的对象
回复 使用道具 举报
NSLog打印C语言中定义的字符串时,不能打印中文字符,此时会跳过打印。
回复 使用道具 举报
1.NSLog会自己加上换行符

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

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

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

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

因为NSLog会造成输出的显示比较乱,当程序需要输出类似矩阵这样的整齐的输出的时候,可能就不适合使用NSLog了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马