優化的NSLog技巧

使用NSLog的一個風險是:它的運行會佔用時間和設備資源。app

簡單而粗暴的解決方案是:在release前,將全部的NSLog註釋掉。簡單有效,但反作用是:下次你要調試時,又得將NSLog一個個取消註釋。iphone


以release模式編譯的程序不會用NSLog輸出,而以debug模式編譯的程序將執行NSLog的所有功能。函數


解決步驟:spa

  1. 修改<AppName>-Prefix.pch ,增長如下的宏代碼.net

    [cpp] view plaincopydebug

    1. #ifdef DEBUG  調試

    2. # define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函數名:%s]\n" "[行號:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);  日誌

    3. #else  orm

    4. # define DLog(...);  blog

    5. #endif  

  2. 在程序中使用DLog來替換原來的NSLog

    [cpp] view plaincopy


    1. DLog(@"當前程序目錄是:%@", [self applicationDocumentsDirectory ]);  

  3. 修改項目的配置,使得在debug編譯的時候,編譯DLog的宏,產生詳細的日誌信息,而release的時候,不產生任何控制檯輸出
    在Other Linker Flags 中,在debug的時候,加入編譯屬性 -DEBUG

  4. 這樣控制檯會顯示這樣的日誌信息

    [cpp] view plaincopy

    1. 2011-12-27 22:23:53.303 IManager[5449:b603] [文件名:/Users/roamer/Project/ÂõΩÊ≥∞ÂêõÂÆâ/Ëꕉ∏öÈÉ®ÁÆ°ÁêÜiphone/IManager/IManager/AppDelegate.m]  

    2. [函數名:-[AppDelegate application:didFinishLaunchingWithOptions:]]  

    3. [行號:37]   

    4. 當前程序目錄是:/Users/roamer/Library/Application Support/iPhone Simulator/4.3.2/Applications/6B0E7B08-5528-468A-B728-0C4580805368/Documents  

相關文章
相關標籤/搜索