Xcode学习笔记中关于如何定义宏问题解决

移动开发 iOS
Xcode学习笔记中关于如何定义宏问题解决是本要介绍的内容,主要是来学xcode中宏的学习,具体来看详细讲解。宏的使用可以节省代码重复输入工作,还可以为调试带来各种好处。

Xcode学习笔记中关于如何定义问题解决是本要介绍的内容,主要是来学xcode的学习,具体来看详细讲解。的使用可以节省代码重复输入工作,还可以为调试带来各种好处。本文列出了几个非常简单实用的

这些是我在Xcode中常用到的宏:

CMLog: 用它来代替NSLog:

#define CMLog(format, ...) NSLog(@"%s:%@", __PRETTY_FUNCTION__,[NSString stringWithFormat:format, ## __VA_ARGS__]);  
  • 1.

它的作用是将调用它的类和方法的名称一起输出到控制台。比如你在MyAppDelegate类的applicationDidFinishLaunching方法中调用它:

CMLog(@"My iPhone is an %@, v %@", [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion]);  
  • 1.

控制台将输出:

2009-01-05 10:06:28.957 MyApp15173:20b]   
     -[MyAppDelegate applicationDidFinishLaunching:]:  
My iPhone is an iPhone Simulator, v 2.2  
  • 1.
  • 2.
  • 3.

MARK: 此宏用于输出调用它的类和方法名称。适用于只想知道是否一个方法被调用了。

#define MARK    CMLog(@"%s", __PRETTY_FUNCTION__);  
  • 1.

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]);  
  • 1.
  • 2.
  • 3.

将START_TIMER 置于需评测的代码段开始处,并将END_TIMER置于代码段结束处,你就可获得这段代码的运行时间:

 - (NSData *)loadDataFromURL:(NSString *)dataURL    
{      
    START_TIMER;      
    NSData *data = [self doSomeStuff:dataURL];      
    END_TIMER(@"loadDataFromURL");      
    return data;    
}  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

输出为:

2009-01-05 10:31:37.943 MyApp[15283:20b] -[MyAppDelegate loadDataFromURL:]:  
loadDataFromURL Time = 3.636021    
  • 1.
  • 2.

将所有这些宏定义整理使用条件标志放在预编译的头文件中。调试时,此标志设为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  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

在Debug目标设定中加入:

OTHER_CFLAGS = -DDEBUG=1    
  • 1.

在Release 目标设定中加入:

OTHER_CFLAGS = -DDEBUG=0 
  • 1.

小结:Xcode学习笔记中关于如何定义问题解决的内容介绍完了,希望通过本文的学习能对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-08-01 17:50:28

Xcode

2010-05-11 15:09:51

Unix系统

2011-06-27 16:44:59

Qmake

2011-06-13 16:16:32

Qt 中文问题

2010-05-20 13:48:17

IIS服务器

2011-09-05 18:57:36

MTKJ2ME

2010-06-17 11:35:24

Ubuntu 修复Gr

2010-04-28 18:01:15

Unix系统

2010-01-05 10:02:56

LinuxRAID常见问题

2010-04-28 19:24:17

Hp unix

2011-08-05 10:57:59

Xcode 升级

2011-11-28 22:45:19

Nginxsession

2010-05-05 10:25:24

Unix操作系统

2009-12-28 10:56:45

WPF Image

2010-09-07 09:08:03

DIV弹出层

2012-05-09 10:08:41

跨机房

2010-05-05 14:20:46

AIX CDE

2011-01-21 14:13:10

2010-08-26 12:59:29

marginCSS

2011-09-07 17:41:01

ubunturvm
点赞
收藏

51CTO技术栈公众号