__FILE__
当前文件所在目录
__DATE__
“替代文字”是一个含有编译日期的字符串字面值,日期格式为“mm dd yyyy”(例如:“Mar 19 2006”)。如果日期小于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)浮点数实现复合IBC 60559标准时定义为1,否者数值是未定义
__STDC_IEC_559_COMPLEX__
(C99)复数运算实现复合IBC 60559标准时定义为1,否者数值是未定义
__STDC_ISO_10646__
(C99)定义为长整型常量,yyyymmL表示wchar_t值复合ISO 10646标准及其指定年月的修订补充,否则数值未定义
1、release时,屏蔽log
C代码
- #ifdefined(DEBUG)&&DEBUG==1
- #else
- #defineNSLog(...){};
- #endif
2、在主线程或在后台执行block
C代码
- #defineBACK(block)dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),block)
- #defineMAIN(block)dispatch_async(dispatch_get_main_queue(),block)
3、设备相关
C代码
- #defineisRetina([UIScreeninstancesRespondToSelector:@selector(currentMode)]?CGSizeEqualToSize(CGSizeMake(640,960),[[UIScreenmainScreen]currentMode].size):NO)
- #defineiPhone5([UIScreeninstancesRespondToSelector:@selector(currentMode)]?CGSizeEqualToSize(CGSizeMake(640,1136),[[UIScreenmainScreen]currentMode].size):NO)
- #defineisPad(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
- #defineCurrentSystemVersion([[UIDevicecurrentDevice]systemVersion])
- #defineCurrentLanguage([[NSLocalepreferredLanguages]objectAtIndex:0])
4、区分模拟器和真机
C代码
- #ifTARGET_OS_IPHONE
- //iPhoneDevice
- #endif
- #ifTARGET_IPHONE_SIMULATOR
- //iPhoneSimulator
- #endif
5、根据是否使用ARC做不同操作
C代码
- #if__has_feature(objc_arc)
- //compilingwithARC
- #else
- //compilingwithoutARC
- #endif
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。