iOS 常用工具宏定义总结

//-----------------------------------------------------------
//#pragma mark - 系统相关
#define USER_DEFAULT        [NSUserDefaults standardUserDefaults]
#define NOTIFICATION_CENTER [NSNotificationCenter defaultCenter]
#define CURRENT_LANGUAGE    [[NSLocale preferredLanguages] objectAtIndex:0]

//-----------------------------------------------------------
#pragma mark - 系统版本判断
#define SYS_VER           [[UIDevice currentDevice] systemVersion]
#define SYS_VER_FLOAT     [SYS_VER floatValue]
#define IOS8_OR_LATER     (SYS_VER_FLOAT >= 8.0f)
#define IOS9_OR_LATER     (SYS_VER_FLOAT >= 9.0f)
#define IOS10_OR_LATER    (SYS_VER_FLOAT >= 10.0f)

#define VERSION_EQUAL_TO(v1,v2) \
                    ([v1 compare:v2 options:NSNumericSearch] == NSOrderedSame)
#define VERSION_GREATER_THAN(v1,v2) \
                    ([v1 compare:v2 options:NSNumericSearch] == NSOrderedDescending)
#define VERSION_GREATER_THAN_OR_EQUAL_TO(v1,v2) \
                    ([v1 compare:v2 options:NSNumericSearch] != NSOrderedAscending)
#define VERSION_LESS_THAN(v1,v2) \
                    ([v1 compare:v2 options:NSNumericSearch] == NSOrderedAscending)
#define VERSION_LESS_THAN_OR_EQUAL_TO(v1,v2) \
                    ([v1 compare:v2 options:NSNumericSearch] != NSOrderedDescending)

#define SYSTEM_VERSION_EQUAL_TO(v)                  VERSION_EQUAL_TO(SYS_VER,v)
#define SYSTEM_VERSION_GREATER_THAN(v)              VERSION_GREATER_THAN(SYS_VER,v)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  VERSION_GREATER_THAN_OR_EQUAL_TO(SYS_VER,v)
#define SYSTEM_VERSION_LESS_THAN(v)                 VERSION_LESS_THAN(SYS_VER,v)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     VERSION_LESS_THAN_OR_EQUAL_TO(SYS_VER,v)

#define APP_VERSION [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]



//-----------------------------------------------------------
#pragma mark - GCD线程相关

#define GCD_ONCE(block)   static dispatch_once_t onceToken; dispatch_once(&onceToken, block);
#define GCD_GLOBAL(block) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block);
#define GCD_MAIN(block)   if([[NSThread currentThread] isMainThread]){block();}else{dispatch_async(dispatch_get_main_queue(),block);}
#define GCD_DELAY(sec,block)  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(sec * NSEC_PER_SEC)), dispatch_get_main_queue(), block);

//-----------------------------------------------------------
#pragma mark - 为空判断相关
///是否为nil或NSNull
#define NOT_NIL_AND_NULL(_ref)    (((_ref) != nil) && (![(_ref) isKindOfClass:[NSNull class]]))
#define IS_NIL_OR_NULL(_ref)      (((_ref) == nil) || ([(_ref) isKindOfClass:[NSNull class]]))
///字符串
#define IS_STR_EMPTY(_ref)        (IS_NIL_OR_NULL(_ref) || ([(_ref) length] == 0))
#define NSSTRING_NOT_NIL(_ref)    IS_NIL_OR_NULL(_ref) ? @"" : _ref
///数组
#define IS_ARRAY_EMPTY(_ref)      (IS_NIL_OR_NULL(_ref) ||([(_ref) count] == 0))



//-----------------------------------------------------------
#pragma mark - 类型数据生成相关
///便捷方式创建NSNumber类型
#define NUMBER_INT( __x )		[NSNumber numberWithInt:(NSInteger)__x]
#define NUMBER_UINT( __x )		[NSNumber numberWithUnsignedInt:(NSUInteger)__x]
#define	NUMBER_FLOAT( __x )		[NSNumber numberWithFloat:(float)__x]
#define	NUMBER_DOUBLE( __x )	[NSNumber numberWithDouble:(double)__x]

//读取本地文件
#define PATH(file,ext)  [[NSBundle mainBundle]pathForResource:file ofType:ext]
#define LOAD_IMAGE(file,ext) [UIImage imageWithContentsOfFile:PATH(file,ext)]

//Color
#define RGBCOLOR(r, g, b)     [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]
#define RGBACOLOR(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(r)/255.0 blue:(r)/255.0 alpha:a]
#define HEXCOLOR(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]
#define HEXCOLORALPHA(rgbValue,_alpha)    [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:_alpha]
#define CLEARCOLOR            [UIColor clearColor]
#define RANDOMCOLOR           [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1.0]



//-----------------------------------------------------------
#pragma mark - 解决循环应用相关
#define Weak(var, weakVar) __weak __typeof(&*var) weakVar = var
#define Strong_DoNotCheckNil(weakVar, _var) __typeof(&*weakVar) _var = weakVar
#define Strong(weakVar, _var) Strong_DoNotCheckNil(weakVar, _var); if (!_var) return;

#define Weak_(var) Weak(var, weak_##var);
#define Strong_(var) Strong(weak_##var, _##var);
#define WeakSelf      Weak(self, weakSelf);
#define StrongSelf    Strong(weakSelf, strongSelf);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值