zoukankan      html  css  js  c++  java
  • 宏定义重写NSLog

    只需要 在ProjectName_Prefix.pch 中追加你对应的宏定义,不用import 就可以直接使用了。

    #define DEBUG

    //宏输出函数

    #ifdef DEBUG

    #define SFun_Log(fmt, ...) NSLog((@"%s," "[lineNum:%d]" fmt) , __FUNCTION__, __LINE__, ##__VA_ARGS__); //带函数名和行数

    #define SL_Log(fmt, ...) NSLog((@"===[lineNum:%d]" fmt), __LINE__, ##__VA_ARGS__);  //带行数

    #define SC_Log(fmt, ...) NSLog((fmt), ##__VA_ARGS__); //不带函数名和行数

    #else

    #define SFun_Log(fmt, ...)

    #define SL_Log(fmt, ...)

    #define SC_Log(fmt, ...)

    #endif

     只需要在Product ->Scheme->Edit Scheme ->info选择,是release ,还是debug版本即可。如果debug 版本,则答应log,若release版本则不打印。

      release 是发行版本,比debug版本要小一些,他们调用两个不同底层库,debug 包含的信息多,可以断点调试,单步执行,使用使用TRACE/ASSERT等调试输出语句,
    但是release 版本不包含调试信息,运行速度比较快。
    另外在此处设置的DEBUG 参数可以在下面的路径进行设置:工程->Target->Build Setting ->Preprocessor Macros。默认系统已经给出了DEBUG的参数。如果要增加新的参数,则在哪里进行增加

    ——FILE——宏在预编译时,会替换成当前的源文件名字

    ——LINE——替换成当前的行号

    ——FUNCTION——替换成当前的函数的名称

    ——VA—ARGS——可变参数的宏,宏前面加上##作用在于:当当可变参数的个数为0 的时候,这里的##起到把前面多余的,去掉的作用。否则编译出错。

  • 相关阅读:
    Docker大行其道—镜像
    Google 推出全新的两步验证机制
    安全警告——“Windows已经阻止此软件因为无法验证发行者”解决办法
    Word2010 自动生成二级编号
    正则表达式判断汉字
    c# IList<T> 深拷贝
    C#IList 取区间数据
    Oracle 同环比排除分母0
    Git 删除服务器的远程分支
    【转】C#获取当前路径7种方法
  • 原文地址:https://www.cnblogs.com/Jordandan/p/4747343.html
Copyright © 2011-2022 走看看