Objective-C言語--共通マクロ定義

2331 ワード

マクロ定義はプログラミングの効率を大きく高めることができ、ここでは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(色に関するマクロ定義が2つあり、個人的には2つ目が精巧だと思います)
#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]

注:第2の使用方法UIcolorFromRGB(0 xabab);
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)