NSLog其實很“貴”

來源:互聯網
上載者:User

所以可以看出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之後,很容易被其他人查看到,對你程式的安全性造成了直接的威脅。除了通過xcode的oganizer可以查看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/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.