IOS开发之----常用宏定义和讲解
2015-07-21 11:07
429 查看
系统宏汇集
__FILE__
当前文件所在目录
__DATE__
“替代文字”是一个含有编译日期的字符串字面值,日期格式为“mm dd yyyy”(例如:“Mar 192006”)。如果日期小于10日,就在日的前面放一个空格符。NSLog(@"_DATE_=%s",__DATE__);
__LINE__
当前语句在源文件中的行数
__TIME__
此字符串字面值包含编译时间,格式为“hh:mm:ss”(范例:“08:00:59”)。
__STDC__
整数常量1,表示此编译器遵循ISOC标准。
__STDC_VERSION__
如何实现复合C89整部1,则这个宏的值为19940SL;如果实现符合C99,则这个宏的值为199901L;否则数值是未定义
__STDC_EOBTED__
(C99)实现为宿主实现时为1,实现为独立实现为0
__STDC_IEC_559__
(C99)浮点数实现复合IBC60559标准时定义为1,否者数值是未定义
__STDC_IEC_559_COMPLEX__
(C99)复数运算实现复合IBC60559标准时定义为1,否者数值是未定义
__STDC_ISO_10646__
(C99)定义为长整型常量,yyyymmL表示wchar_t值复合ISO10646标准及其指定年月的修订补充,否则数值未定义
1、release时,屏蔽log
C代码
#if defined (DEBUG) && DEBUG == 1
#else
#define NSLog(...) {};
#endif
2、在主线程或在后台执行block
C代码
#define BACK(block) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block)
#define MAIN(block) dispatch_async(dispatch_get_main_queue(),block)
3、设备相关
C代码
#define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define CurrentSystemVersion ([[UIDevice currentDevice] systemVersion])
#define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])
4、区分模拟器和真机
C代码
#if TARGET_OS_IPHONE
//iPhone Device
#endif
#if TARGET_IPHONE_SIMULATOR
//iPhone Simulator
#endif
5、根据是否使用ARC做不同操作
C代码
#if __has_feature(objc_arc)
//compiling with ARC
#else
// compiling without ARC
#endif
__FILE__
当前文件所在目录
__DATE__
“替代文字”是一个含有编译日期的字符串字面值,日期格式为“mm dd yyyy”(例如:“Mar 192006”)。如果日期小于10日,就在日的前面放一个空格符。NSLog(@"_DATE_=%s",__DATE__);
__FUNCTION__
当前函数名称
__LINE__当前语句在源文件中的行数
__TIME__
此字符串字面值包含编译时间,格式为“hh:mm:ss”(范例:“08:00:59”)。
__STDC__
整数常量1,表示此编译器遵循ISOC标准。
__STDC_VERSION__
如何实现复合C89整部1,则这个宏的值为19940SL;如果实现符合C99,则这个宏的值为199901L;否则数值是未定义
__STDC_EOBTED__
(C99)实现为宿主实现时为1,实现为独立实现为0
__STDC_IEC_559__
(C99)浮点数实现复合IBC60559标准时定义为1,否者数值是未定义
__STDC_IEC_559_COMPLEX__
(C99)复数运算实现复合IBC60559标准时定义为1,否者数值是未定义
__STDC_ISO_10646__
(C99)定义为长整型常量,yyyymmL表示wchar_t值复合ISO10646标准及其指定年月的修订补充,否则数值未定义
1、release时,屏蔽log
C代码
#if defined (DEBUG) && DEBUG == 1
#else
#define NSLog(...) {};
#endif
2、在主线程或在后台执行block
C代码
#define BACK(block) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block)
#define MAIN(block) dispatch_async(dispatch_get_main_queue(),block)
3、设备相关
C代码
#define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define CurrentSystemVersion ([[UIDevice currentDevice] systemVersion])
#define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])
4、区分模拟器和真机
C代码
#if TARGET_OS_IPHONE
//iPhone Device
#endif
#if TARGET_IPHONE_SIMULATOR
//iPhone Simulator
#endif
5、根据是否使用ARC做不同操作
C代码
#if __has_feature(objc_arc)
//compiling with ARC
#else
// compiling without ARC
#endif
相关文章推荐
- iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)
- iOS-CoreLocation:无论你在哪里,我都要找到你!
- iOS描述文件mobileconfig文件的签名认证
- ios学习笔记--(c基础题6)
- iOS 的几种数据持久化方案
- 2014最新苹果开发者账号注册流程图解分享
- iOS真机调试沙盒系统查看
- 关于IOS应用程序视图
- CPU Utilization Plugin For Nagios v2.0 推荐
- IOS MVC模式初探
- IOS - 个人中心界面
- 【转载国外好文】代工开发一个iOS应用没有那么容易
- CISCO IOS 分类
- 【转】iOS中几种数据持久化方案:我要永远地记住你!
- iOS-CoreLocation:无论你在哪里,我都要找到你!
- ios7-21数组
- iOS中几种数据持久化方案:我要永远地记住你!
- ios开发归档与接档
- iOS之友盟错误统计解决
- IOS本地推送 学习手记