成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iPhone應用根據Debug和Release狀態變化來屏蔽日志輸出

移動開發 iOS
發布正式版的時候一定要屏蔽掉所有后臺輸出,因為這些輸出還是比較消耗系統資源的。 往往到了這個時候,我們不得不去一行一行的找到 NSLog 調用,然后注釋掉。

iPhone應用根據Debug和Release狀態變化來屏蔽日志輸出是我們要介紹的內容,我們平時在開發應用的時候,經常會用到 NSLog 來調試我們的程序,而隨著項目越來越大,這些用于調試的日志輸出就會變得很難管理。 發布正式版的時候一定要屏蔽掉所有后臺輸出,因為這些輸出還是比較消耗系統資源的。  往往到了這個時候,我們不得不去一行一行的找到 NSLog 調用,然后注釋掉。

這樣做在項目小的時候還比較有效,但隨著項目規模的增長,就會變得越來越難控制。  下面就給大家介紹一個簡單的方法,讓我們在生成 Release 版本時不需要進行任何更改即可屏蔽所有的日志輸出

首先我們先要定義這樣一段預處理命令,文件名隨便起,例如 CLog.h

  1. #ifdef DEBUG  
  2. #define CLog(format, ...) NSLog(format, ## __VA_ARGS__)  
  3. #else  
  4. #define CLog(format, ...)  
  5. #endif 

這里我們判斷 DEBUG 這個宏是否定義,如果有定義我們就將這個 CLog 宏替換成 NSLog 調用,而如果沒有定義過 DEBUG 標志我們就直接跳過。這點應該不難理解。

檢查 DEBUG 標志是否正確定義,Xcode 一般會在 debug 運行配置項里面已經定義號了DEBUG 標志,如果沒定義我們就自己寫上,以我的 Xcode 4 為例,如下圖:

找到 PreProcessor Macros 這個屬性,對于 Debug 配置我們給他寫上 DEBUG,而在 Release 配置中把它留空。 這樣我們剛才那段預處理命令就可以根據這個標志來判斷我們編譯的時調試版本還是發布版本,從而控制 NSLog 的輸出。 (因為 Xcode 4 會把 debug/release 兩個配置項同時對比展現出來,而 3.x 版本的只能分別設置,如果你用的時xcode 3.x 開發工具, 那么就分別對 Debug/Release 都檢查一下)。

到了這里我們這個判斷工作就都進行完了,不過這里還有一點比較麻煩,就是我們如果想實用 CLog 宏,就必須要導入 CLog.h 這個頭文件。 不過 Xcode 為我們提供了一種非常巧妙的解決辦法。 我們自己看一下項目里的文件,是不是有一個叫做 xxx-prefix.pch 的文件,只要注意到 pch 這個擴展名就可以了。 這個文件是做什么用的呢? 下面是一個 pch 文件的樣本:

  1. //  
  2. // Prefix header for all source files  
  3. //  
  4. #import <Availability.h> 
  5. #ifndef __IPHONE_3_0  
  6. #warning "This project uses features only available in iPhone SDK 3.0 and later."  
  7. #endif  
  8. #ifdef __OBJC__  
  9.     #import <UIKit/UIKit.h> 
  10.     #import <Foundation/Foundation.h> 
  11. #endif 

這里引入了一些頭文件, 其實是 Xcode 的一種預編譯機制,我們在編譯一個項目的時候,會有很多常用的源文件,并且這些代碼文件幾乎不被修改,所以 Xcode 對這些文件只在早期進行一次編譯,以便我們以后的多次構建過程中反復實用。 例如這里的 UIKit 和 Foundation ,這樣的機制可以加快我們每次構建項目的速度。

當然這里我們不必太深究它,知道它的作用后,我們就可以利用它來為我們的開發提供便利。 我們只需要將剛剛建立的 CLog.h 也在這里面引入一下,這樣我們項目中的所有文件就都能夠訪問到我們剛剛定義的 CLog 宏了。 下面是完成后的 pch 文件:

  1. #import <Availability.h> 
  2. #ifndef __IPHONE_3_0  
  3. #warning "This project uses features only available in iPhone SDK 3.0 and later."  
  4. #endif  
  5. #ifdef __OBJC__  
  6.     #import <UIKit/UIKit.h> 
  7.     #import <Foundation/Foundation.h> 
  8.     #import "CLog.h"  
  9. #endif 

這樣,我們的 CLog 就完成了,現在可以在任何一個源文件中實用 CLog 宏來輸出日志,預處理命令會自動判斷當前的編譯配置,如果是 Debug,就會輸出日志,反之則什么都不會輸出。

小結:iPhone應用根據Debug和Release狀態變化來屏蔽日志輸出的內容介紹完了,希望通過學習對你有所幫助。

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-07-08 18:34:34

iOS Debug Release

2011-09-16 10:18:20

2022-03-08 06:31:41

DebugRelease

2009-05-07 08:50:22

2015-01-06 09:11:54

TCP

2011-08-16 18:42:42

iPhone開發Release

2024-05-30 11:53:51

2021-02-06 21:57:40

Debug模式Release

2014-06-23 10:58:48

2011-08-01 09:34:32

Xcode Xcode 4 編譯器

2011-08-01 18:44:16

iPhone開發 UIALertVie UIActionSh

2011-08-03 17:18:58

iPhone UILabel UISlider

2011-09-02 17:40:11

iPhone應用SoundHound歌曲

2023-10-10 09:19:59

日志Java

2023-11-29 16:29:09

線程java

2011-08-05 14:58:58

iPhone CoreAnimat 動畫

2014-11-07 10:44:26

惡意軟件WireLurker

2016-03-01 14:37:38

iOSLLDB調試技巧

2022-12-05 11:44:49

PrintDebugIceCream

2023-10-26 07:15:46

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费一区二区 | 日本a视频| 色婷婷av一区二区三区软件 | 国际精品鲁一鲁一区二区小说 | 九九在线精品视频 | 亚洲激情在线观看 | 99久久国产精 | 91国产精品 | 免费视频一区二区 | 欧美久久久 | 一区二区三区四区在线 | 亚洲一区二区三区四区五区午夜 | 国产伦精品一区二区三区精品视频 | 亚洲成人综合网站 | 日韩靠逼| 欧美电影网 | 国产色网| 特一级毛片 | 日韩欧美国产精品 | 在线视频一区二区 | 最新国产在线 | 欧洲视频一区二区 | 欧美日韩久| 精品一区二区三区在线观看国产 | 欧美成人在线免费 | 国产精品久久久久无码av | 蜜桃一区 | 免费在线观看毛片 | 欧美激情国产精品 | 国产精品免费在线 | 奇米av| 伊人春色成人网 | 亚洲成人精品 | 国产成人99久久亚洲综合精品 | 亚洲一区二区三区在线观看免费 | 夜夜摸夜夜操 | 欧美日韩一区二区在线 | 国产精品永久免费 | 欧美在线视频二区 | 国产精品国产精品国产专区不卡 | 亚洲国产二区 |