NSLog其实很“贵”

NSLog其实很“贵” - weiyanen@126 - knight与juan的博客

所以从图中可以看出NSLog的工作主要是分为:1. 输出信息到终端,2. 输出信息到System Log中去。

一般开发的时候程序都是从Xcode中启动,所以这个时候NSLog就具有打印信息到终端的能力就像printf一样(说fprintf(stderr, ….) 更合适一点)。而且很自然也就认为NSLog只是用来打印这些调试信息用的。

但是当程序不是从xcode或者ternimal启动等时,因为stderr不是被定向到标准终端这个时候NSLog的功能就是把信息输入到System Log中去。如果这个时候你也用的stderr输入信息,这个时候stderr会被定向到System Log中去。

这样,NSLog在给终端控制台发信息时,还要给系统发Log,资源占用高,所以在程序的release版本中,应把NSlog去掉。


程序员使用NSLog注意事项

在了解了NSLog的工作原理之后,你还敢像只是用printf那样使用NSLog了吗?我可以很负责人的告诉你虽然苹果的设备硬件条件都很牛B,但是NSLog还是是一件非常expensive的事情,主要体现在这两点:

  1. NSLog在打印信息的同时要发送日志,效率低
  2.  序一些调试信息通过NSLog发送到System Log之后,很容易被其他人查看到,对你程序的安全性造成了直接的威胁。除了通过xcodeoganizer可以查看console,在iPhone 有一个叫ConsoleLog的程序可以查看你的这些日志(http://itunes.apple.com/us/app/consolelog /id415116252?mt=8)。

所以综合这些因素,我们应该在程序release的时候尽量去掉NSLog,但是如果程序大了一个一个去删NSLog似乎也不现实。于是网上就有不少牛人提供了不少的解决方案。推荐一篇著名的Cocoa Is My Girlfriend“Dropping NSLog in Release Build” http://www.cimgf.com/2009/01/24/dropping-nslog-in-release-builds/ .

原文:http://blog.163.com/weiyanen@126/blog/static/2559640420117215343489/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值