宏定义可以很大程度的提高编程的效率,这里收集整理在Objective-C中常用的宏定义,会不断补充。
1、Log(在Debug模式下输出Log,在Release模式下不输出)
#ifdef DEBUG # define Log(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) #else # define Log(...) #endif
注:fmt代表参数;…表示可变长度参数;(@"%s [Line %d] " fmt)采用括号为了确保NSLog中的第一个参数;@"%s [Line %d] "用字符串表示是为了双引号的匹配。
例如:Log(@"%d,%@",7,@"S.Li");实际等价于NSLog((@"%s[Line %d]" @"%d,%@"), __PRETTY_FUNCTION__, __LINE__, 7,@"S.Li");
2、Color(两种有关于颜色的宏定义,个人觉得第二种精巧)
#define RGBColor(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define RGBColor(r,g,b,a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:a]
#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
注:第二种的使用方式UIColorFromRGB(0xababab);
3、获取系统版本信息
#define SYSTEM_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]
#define SYSTEM_VERSION_OLDER_THAN_6 ([[[ UIDevice currentDevice ] systemVersion] floatValue] <6.0)
#define SYSTEM_VERSION_NEWER_OR_EQUAL_TO_7 ([[[UIDevice currentDevice] systemVersion] floatValue] >=7.0)
#define SYSTEM_VERSION_NEWER_OR_EQUAL_TO_8 ([[[UIDevice currentDevice] systemVersion] floatValue] >=8.0)
#define SYSTEM_VERSION_EQUAL_TO(v)([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v)([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)