• 修改NSLog的输出格式以及是否输出(转)


    NSLog是笔者在iOS开发中,用到的频率最高的函数,不是之一。比起下断点,然后一步一步的跟进调试程序,笔者更喜欢直观的通过NSLog输出一些东西以确定程序的运行行为。以前的时候有研究过怎样在打包提交时一次性清除所以的调试语句(调试总是件花时间的时候事儿,经常有时候写了一条输出,然后忘记注释了,然后可能要不知道哪天突然看到一条输出,然后要找半天才能注释掉),研究最终的结果还是觉得要养成好的习惯,用完的输出要及时注释。十一期间没事儿,突然又想到了这个话题,又研究了一番,发现不但可以一次性的取消所有的调试输出,还可以调整输出内容的格式!要知道原来通过NSLog输出的东西只有最后面冒号后面的东西是有用的。如:

    2012-10-21 15:59:29.007 autoArchiveIPA[3718:303] Hello Yingkong1987

    前面的时间,中间的应用名,进程号,再往后面这个不知道是嘛东东的东东,基本没啥用。于是改进了一下变成这样:

    AppDelegate.m:18 Hello Yingkong1987

    一下子输出信息就变得有用的多了,我们很容易的知道这条输出语句是AppDelegate.m这个文件的第18行。然后通过“Command+l”,调出“Jump”对话框,很容易快速定位到这条输出语句。

    是不是有点儿期待是怎么实现的了呢?其实很简单,打开“工程名-Prefix.pch”文件,在里面的

    #ifdef __OBJC__
      #import <Cocoa/Cocoa.h>
    #endif

    后面添加:

    /*
     控制NSLog的输出
     1 显示输出
     0 不显示输出
     */
    #if 1
    #define NSLog(FORMAT, ...) fprintf(stderr,"%s:%d\t%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
    #else
    #define NSLog(FORMAT, ...) nil
    #endif

    上面怎样控制调试信息的输出已经写的很清楚了,但是我还是觉得养成手动清除调试信息是个好习惯,你觉得呢?

  • 相关阅读:
    基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果(转)
    javascript中call、apply、argument、callee、caller
    Google Analytics10条有用教程(转)
    小问题
    MySQL exists的用法介绍
    warning C4005: “AF_IPX”: 宏重定义的解决办法
    /MT、/MD编译选项,以及可能引起在不同堆中申请、释放内存的问题
    _mkdir
    文件读写操作总结
    Distinct
  • 原文地址:https://www.cnblogs.com/yingkong1987/p/2740459.html
Copyright © 2020-2023  润新知