赞
踩
iOS开发中,巧妙的使用宏定义,可以提高开发效率,本篇简单介绍一下宏的定义,设置,应用,并在未来实践中不断追加一些常用的宏定义。
iPhone应用程序开发调试的时候,在代码中加入NSLog的暴力调试方法是很频繁的,但是在release的时候要删除这些调试代码,那工作量是烦躁,这样的情况下,试用宏就会显得非常的方便。 看下面的例子:
#ifdef DEBUG #define LOG(...) NSLog(__VA_ARGS__); #define LOG_METHOD NSLog(@"%s", __func__); #else #define LOG(...); #define LOG_METHOD; #endif |
像上面例子这些宏,ProjectName_Prefix.pch中追加之后,不用import就能直接在工程的文件中直接试用了。
默认情况下,在工程设置的Macros里已经有DEBUG的设置参数的,如果需要添加其他参数的话,就在Xcode的工程设定里设置相对应的参数:
这样设置以后,调试log的代码段只会在debug的时候才有效。 另外使用方法的话,就是用定义的LOG方法去替代NSLog方法,想打出函数名的log就使用LOG_METHOD。 例:
LOG(@"Data:%@",str); LOG_METHOD |
大家可以根据项目的需要添加各种log处理的形式,这样就方便许多了。
#ifdef DEBUG #define DNSLogPoint(p) NSLog(@"%f,%f", p.x, p.y); #define DNSLogSize(p) NSLog(@"%f,%f", p.width, p.height); #define DNSLogRect(p) NSLog(@"%f,%f,%f,%f", p.origin.x, p.origin.y, p.size.width, p.size.height,); #else #define DNSLogPoint(p); #define DNSLogSize(p); #define DNSLogRect(p); |
除了DEBUG,有时候有很多的配置用宏的话,写代码也没有那么烦躁,比如说Google Analytics的设定
#define GA_TRACKPAGE(PAGE) { NSError *error; if (![[GANTracker sharedTracker]trackPageview:[NSString stringWithFormat:@"/%@", PAGE] withError:&error]) { LOG(@"%@",error.helpAnchor); } LOG(@"GA /%@", PAGE); }; #define GA_TRACKEVENT(EVENT,ACTION,LABEL,VALUE) { NSError *error; if (![[GANTracker sharedTracker] trackEvent:EVENT action:ACTION label:LABEL value:VALUE withError:&error]){ LOG(@"%@",error.helpAnchor); } LOG(@"GA %@/%@/%@", EVENT, ACTION, LABEL); }; #define GA_TRACK_CLASS GA_TRACKPAGE(NSStringFromClass([self class])); #define GA_TRACK_METHOD GA_TRACKEVENT(NSStringFromClass([self class]),NSStringFromSelector(_cmd), @””, -1); } |
#define ReloadBarButton [[[UIBarButtonItem alloc]initWithImage:ReloadBarButtonIcon
style:UIBarButtonItemStylePlai
target:self
action:@selector(ContentsReload:)]
autorelease]
参照C语言的预处理命令简介 :
#define
#undef #include #include_next #if #ifdef #ifndef #elif #else #endif defined #line # ## #pragma #error #define SAFE_RELEASE(obj) if(obj){[obj release];obj=nil;} 释放
参考文档:
http://blog.csdn.net/wangqiuyun/article/details/8104698
http://blog.csdn.net/a351945755/article/details/8433909
如何在Xcode Build Setting中使用Compiler Flags重要提醒: 最好在一个Demo项目里进行这些演练的操作,因为一旦设置这些东西,project.pbxproj配置文件就会更改,而且没发Command+Z回退。 可以通过设置Compiler Flags来定义宏,然后就可以在代码中使用这些宏,来进行条件编译的操作。 有三种方式设置: OTHER_CFLAGS (Other C Flags) // 在Target>Build Setting>Custom Compiler Flags>Other C Flags GCC_PREPROCESSOR_DEFINITIONS (Preprocessor Macros) // 在Target>Build Setting> Preprocessing > Preprocessor Macros INFOPLIST_PREPROCESSOR_DEFINITIONS (Info.plist Preprocessor Definitions) // 在Target>Build Setting> Packaging > Info.plist Preprocessor Definitions 注意:在other c flags 设置 需要使用-D的格式 -D[你要设置的宏名称] // 没有中括号 在 Preprocessor Macros 设置定义宏需要转义,例如 // 定义替换为NSString类型 MY_MACRO=@\"Hello!!\" // 这样定义替换后的类型是:NSNumber MY_NUMBER=@"123" |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。