Xcode学习笔记中关于如何定义宏问题解决
来源:互联网 发布:淘宝店虚假交易警告 编辑:程序博客网 时间:2024/06/06 17:13
Xcode学习笔记中关于如何定义宏问题解决是本要介绍的内容,主要是来学xcode中宏的学习,具体来看详细讲解。宏的使用可以节省代码重复输入工作,还可以为调试带来各种好处。本文列出了几个非常简单实用的宏。
这些是我在Xcode中常用到的宏:
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
- Xcode学习笔记中关于如何定义宏问题解决
- Xcode学习笔记中关于如何定义宏问题解决
- Xcode学习笔记中关于如何定义宏问题解决
- 学习笔记:关于头文件中定义静态变量
- Xcode学习笔记---如何学好Objective C
- OpenCV学习笔记(3)关于一个宏定义
- [iOS学习笔记] 如何在Xcode 4中修改代码的Copyright信息
- Xcode学习笔记---在Xcode4.6中如何引入Existing Frameworks
- XCode中如何使用宏
- caffe中关于layer定义的笔记
- Java学习笔记(一)——JAVA中关于对象数组的定义与使用
- Xcode 宏定义
- 关于在Xcode中如何使用快捷键整理代码
- 【学习笔记】宏定义基础
- 使用xcode的preprocess功能学习宏定义
- Objectiv-C学习笔记-如何关闭XCode ARC机制
- Objectiv-C学习笔记-如何关闭XCode ARC机制
- Objectiv-C学习笔记-如何关闭XCode ARC机制
- 保留代码风格原格式复制到word文档
- ASP.NET中如何实现负载均衡
- JMS的两种模式 P2P,PUB/SUB
- linux解压 tar命令
- Oracle incremental backup shell scripts
- Xcode学习笔记中关于如何定义宏问题解决
- Android 中如何动态设定imageview的大小
- 国内HTML5前端开发框架汇总
- VC++的文件操作
- extends与implements
- 其实,我们并不在同一起跑线。尽力就好。(转自人人)
- oracle中使用存储过程解析xml字符串
- 颜色色值表
- 硬盘的原理以及SQL Server如何利用硬盘原理减少IO