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  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值