使用NSLog的一個風險是:它的運行會佔用時間和設備資源。app
簡單而粗暴的解決方案是:在release前,將全部的NSLog註釋掉。簡單有效,但反作用是:下次你要調試時,又得將NSLog一個個取消註釋。iphone
以release模式編譯的程序不會用NSLog輸出,而以debug模式編譯的程序將執行NSLog的所有功能。函數
解決步驟:spa
修改<AppName>-Prefix.pch ,增長如下的宏代碼.net
[cpp] view plaincopydebug
#ifdef DEBUG 調試
# define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函數名:%s]\n" "[行號:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); 日誌
#else orm
# define DLog(...); blog
#endif
在程序中使用DLog來替換原來的NSLog
[cpp] view plaincopy
DLog(@"當前程序目錄是:%@", [self applicationDocumentsDirectory ]);
修改項目的配置,使得在debug編譯的時候,編譯DLog的宏,產生詳細的日誌信息,而release的時候,不產生任何控制檯輸出
在Other Linker Flags 中,在debug的時候,加入編譯屬性 -DEBUG
這樣控制檯會顯示這樣的日誌信息
[cpp] view plaincopy
2011-12-27 22:23:53.303 IManager[5449:b603] [文件名:/Users/roamer/Project/ÂõΩÊ≥∞ÂêõÂÆâ/Ëꕉ∏öÈÉ®ÁÆ°ÁêÜiphone/IManager/IManager/AppDelegate.m]
[函數名:-[AppDelegate application:didFinishLaunchingWithOptions:]]
[行號:37]
當前程序目錄是:/Users/roamer/Library/Application Support/iPhone Simulator/4.3.2/Applications/6B0E7B08-5528-468A-B728-0C4580805368/Documents