zoukankan      html  css  js  c++  java
  • IOS 常用宏定义(二)

    1.在打印log信息的时候,我们常常不知道此Log信息来自本代码的哪行。用NSLog函数替代可以解决这个问题“

    做法:

    1.1在Prefix.pch中添加如下代码:

     
    extern void LogFunction(NSString *format, ...);
    #ifdef DEBUG
    #define __BASENAME__ (strrchr(__FILE__, '/') + 1)
    #define NSLogAlt(...) \
    LogFunction(@ "%s(%s:%05d)%@" , __PRETTY_FUNCTION__, __BASENAME__, __LINE__, [NSString stringWithFormat:__VA_ARGS__])
    #else
    #define NSLogAlt(...)
    #endif
    #define NSLog(...) NSLogAlt(__VA_ARGS__)

     1.2 在main函数中添加:

    void LogFunction(NSString *format, ...)
    {
         va_list argList;
         va_start (argList, format);
         NSString *str=[[NSString alloc]initWithFormat:format arguments:argList];
         va_end (argList);
    #undef NSLog
         NSLog(@ "%@" , str);
    #define NSLog(...) NSLogAlt(__VA_ARGS__)
    // [str release];
    }

    使用:直接使用NSLog(@“”)打印信息。此时打印的信息中包含文件名,函数名以及该打印信息在NSLog所在文件中的位置。

    2.release模式下禁用NSLog

    NSLog的运行会占用时间和设备资源,因此在Release模式下编译的程序最好不用NSLog,而在Debug模式下将执行NSLog的全部功能

    Release模式通常会定义__OPTINIZE__,Debug模式不会。将下面的代码放在头文件中你就可以放心的时候NSLog了、

    1. #ifndef __OPTIMIZE__  
    2. # define NSLog(…) NSLog(__VA_ARGS__)  
    3. #else  
    4. # define NSLog(…) {}  
    5. #endif  
  • 相关阅读:
    【笔记】【dp模型】
    【刷题】【dp】【背包】金明的预算
    建模结束了——5.3
    HDU
    洛谷 P2734 [USACO3.3]游戏 A Game
    洛谷 P4095 [HEOI2013]Eden 的新背包问题
    洛谷 P1156 垃圾陷阱
    洛谷 P1833 樱花
    洛谷 P3966 [TJOI2013]单词
    洛谷 P5357 【模板】AC自动机(二次加强版)
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3035752.html
Copyright © 2011-2022 走看看