zoukankan      html  css  js  c++  java
  • 修改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

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

  • 相关阅读:
    CSS选择器实现搜索功能 驱动过滤搜索技术
    js实现倒计时 类似团购网站
    SQL Server系统表sysobjects介绍与使用
    四种开机的奇葩方法 设置定时开机
    sass 使用小记
    flex 弹性布局
    margin padding width height left top right bottom 百分比
    vue中canvas 实现手势密码
    babel-polyfill(解决浏览器不支持es6的问题)和es6-promise(解决不支持promise的问题)
    Ajax fetch axios的区别与优缺点
  • 原文地址:https://www.cnblogs.com/yingkong1987/p/2740459.html
Copyright © 2011-2022 走看看