关于宏定义
来源:互联网 发布:glibc 源码 编辑:程序博客网 时间:2024/04/28 14:57
CMLog: 用它来代替NSLog:
#define CMLog(format, ...) NSLog(@"%s:%@", __PRETTY_FUNCTION__,[NSString stringWithFormat:format, ## __VA_ARGS__]);
它的作用是将调用它的类和方法的名称一起输出到控制台。比如你在MyAppDelegate类的applicationDidFinishLaunching方法中调用它:
CMLog(@"My iPhone is an %@, v %@", [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion]);
控制台将输出:
2009-01-05 10:06:28.957 MyApp15173:20b] -[MyAppDelegate applicationDidFinishLaunching:]: My iPhone is an iPhone Simulator, v 2.2
MARK: 此宏用于输出调用它的类和方法名称。适用于只想知道是否一个方法被调用了。
#define MARK CMLog(@"%s", __PRETTY_FUNCTION__);
START_TIMER和END_TIMER: 用于确定一个方法或一段代码的运行时间:
#define START_TIMER NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate]; #define END_TIMER(msg) NSTimeInterval stop = [NSDate timeIntervalSinceReferenceDate]; CMLog([NSString stringWithFormat:@"%@ Time = %f";, msg, stop-start]);
将START_TIMER 置于需评测的代码段开始处,并将END_TIMER置于代码段结束处,你就可获得这段代码的运行时间:
- (NSData *)loadDataFromURL:(NSString *)dataURL { START_TIMER; NSData *data = [self doSomeStuff:dataURL]; END_TIMER(@"loadDataFromURL"); return data; }
输出为:
2009-01-05 10:31:37.943 MyApp[15283:20b] -[MyAppDelegate loadDataFromURL:]: loadDataFromURL Time = 3.636021
将所有这些宏定义整理使用条件标志放在预编译的头文件中。调试时,此标志设为1 ,发布时将其设为0 。
#if DEBUG==1 #define CMLog(format, ...) NSLog(@"%s:%@";, __PRETTY_FUNCTION__,[NSString stringWithFormat:format, ## __VA_ARGS__]); #define MARK CMLog(@"%s";, __PRETTY_FUNCTION__); #define START_TIMER NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate]; #define END_TIMER(msg) NSTimeInterval stop = [NSDate timeIntervalSinceReferenceDate]; CMLog([NSString stringWithFormat:@"%@ Time = %f";, msg, stop-start]); else #define CMLog(format, ...) #define MARK #define START_TIMER #define END_TIMER(msg) endif
在Debug目标设定中加入:
OTHER_CFLAGS = -DDEBUG=1
在Release 目标设定中加入:
OTHER_CFLAGS = -DDEBUG=0
原文地址:http://www.cnblogs.com/pengyingh/articles/2402977.html
0 0
- 关于宏定义
- 关于换行宏定义
- 关于宏定义 # ##
- 关于宏定义
- 关于宏定义
- 关于 宏定义
- 关于宏定义
- 关于定义宏
- 关于宏定义
- 关于宏定义
- 关于宏定义
- 关于宏定义函数
- 杂七杂八 - 关于宏定义
- 关于宏定义
- 关于#define宏定义
- 关于宏定义预处理
- 关于define宏定义
- 关于变量定义,声明,宏定义等
- android 二维码开发,Camera竖屏问题
- boost::function的简单用法
- linux源码安装软件
- jacob基础及其相关代码
- latex算法排版
- 关于宏定义
- 新站点
- Objective-C 和 Core Foundation 对象相互转换的内存管理总结
- 安卓出现android.widget.TextView cannot be cast to android.widget.Button问题
- Leetcode【11】:Container With Most Water
- loadrunner录制脚本,自动关闭的多种原因--待后续在补充
- 计算机视觉开源库集合
- android中如何显示图片的一部分
- Java引用类型