iOS中常用的宏定义总结
前言
宏定义在C系开发中可以说占有举足轻重的作用,为了简化开发流程,提升工作效率,收集了一些平时常用的宏定义,今后会不定期更新
1.UI元素
//NavBar高度 #defineNAVIGATIONBAR_HEIGHT44 //StatusBar高度 #defineSTATUSBAR_HEIGHT20 //获取屏幕宽度、高度 #defineSCREEN_WIDTH([UIScreenmainScreen].bounds.size.width) #defineSCREEN_HEIGHT([UIScreenmainScreen].bounds.size.height) //内容视图高度 #defineCONTENT_HEIGHT(SCREEN_HEIGHT-NAVIGATIONBAR_HEIGHT-STATUSBAR_HEIGHT) //KWindow #defineKWINDOW[UIApplicationsharedApplication].keyWindow //屏幕分辨率 #defineSCREEN_RESOLUTION(SCREEN_WIDTH*SCREEN_HEIGHT*([UIScreenmainScreen].scale)) //状态栏+导航栏高度 #defineSTATUS_AND_NAVIGATION_HEIGHT((STATUSBAR_HEIGHT)+(NAVIGATIONBAR_HEIGHT))
2.Log
//(在系统Log基础之上,加入自定义的相关信息) #defineNSLog(format,...)do{\ fprintf(stderr,"<%s:%d>%s\n",\ [[[NSStringstringWithUTF8String:__FILE__]lastPathComponent]UTF8String],\ __LINE__,__func__);\ (NSLog)((format),##__VA_ARGS__);\ fprintf(stderr,"-------\n");\ }while(0)
3.系统
//获取当前系统版本 #defineIOS_VERSION[[[UIDevicecurrentDevice]systemVersion]floatValue] #defineCurrentSystemVersion[[UIDevicecurrentDevice]systemVersion] //获取当前系统语言 #defineCurrentLanguage([[NSLocalepreferredLanguages]objectAtIndex:0]) //判断是不是真机 #ifTARGET_OS_IPHONE //iPhoneDevice #endif //判断是不是模拟器 #ifTARGET_IPHONE_SIMULATOR //iPhoneSimulator #endif //是否在ARC环境下 #if__has_feature(objc_arc) //compilingwithARC #else //compilingwithoutARC #endif //判断是否为iPhone #defineIS_IPHONE(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone) //判断是否为iPad #defineIS_IPAD(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) //判断是否为ipod #defineIS_IPOD([[[UIDevicecurrentDevice]model]isEqualToString:@"iPodtouch"]) //判断是否为iPhone5(S)(E) #defineiPhone5SE[[UIScreenmainScreen]bounds].size.width==320.0f&&[[UIScreenmainScreen]bounds].size.height==568.0f //判断是否为iPhone6/6s #defineiPhone6_6s[[UIScreenmainScreen]bounds].size.width==375.0f&&[[UIScreenmainScreen]bounds].size.height==667.0f //判断是否为iPhone6Plus/6sPlus #defineiPhone6Plus_6sPlus[[UIScreenmainScreen]bounds].size.width==414.0f&&[[UIScreenmainScreen]bounds].size.height==736.0f //判断iOS或更高的系统版本 #defineIOS_VERSION_6_OR_LATER(([[[UIDevicecurrentDevice]systemVersion]floatValue]>=6.0)?(YES):(NO)) #defineIOS_VERSION_7_OR_LATER(([[[UIDevicecurrentDevice]systemVersion]floatValue]>=7.0)?(YES):(NO)) #defineIOS_VERSION_8_OR_LATER(([[[UIDevicecurrentDevice]systemVersion]floatValue]>=8.0)?(YES):(NO)) #defineIOS_VERSION_9_OR_LATER(([[[UIDevicecurrentDevice]systemVersion]floatValue]>=9.0)?(YES):(NO)) #defineIOS_VERSION_10_OR_LATER(([[[UIDevicecurrentDevice]systemVersion]floatValue]>=10.0)?(YES):(NO)) //系统版本工具 #defineSYSTEM_VERSION_EQUAL_TO(v)([[[UIDevicecurrentDevice]systemVersion]compare:voptions:NSNumericSearch]==NSOrderedSame) #defineSYSTEM_VERSION_GREATER_THAN(v)([[[UIDevicecurrentDevice]systemVersion]compare:voptions:NSNumericSearch]==NSOrderedDescending) #defineSYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)([[[UIDevicecurrentDevice]systemVersion]compare:voptions:NSNumericSearch]!=NSOrderedAscending) #defineSYSTEM_VERSION_LESS_THAN(v)([[[UIDevicecurrentDevice]systemVersion]compare:voptions:NSNumericSearch]==NSOrderedAscending) #defineSYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)([[[UIDevicecurrentDevice]systemVersion]compare:voptions:NSNumericSearch]!=NSOrderedDescending) //检测是否是竖屏状态 #defineIsPortrait([UIApplicationsharedApplication].statusBarOrientation==UIInterfaceOrientationPortrait||[UIApplicationsharedApplication].statusBarOrientation==UIInterfaceOrientationPortraitUpsideDown)
4.颜色类
//带有RGBA的颜色设置 #defineCOLOR(R,G,B,A)[UIColorcolorWithRed:R/255.0green:G/255.0blue:B/255.0alpha:A] //设置随机颜色(调试时候很有用) #defineRandomColor[UIColorcolorWithRed:arc4random_uniform(256)/255.0green:arc4random_uniform(256)/255.0blue:arc4random_uniform(256)/255.0alpha:1.0] //16进制颜色 #defineRGB16Color(rgbValue)[UIColorcolorWithRed:((float)((rgbValue&0xFF0000)>>16))/255.0green:((float)((rgbValue&0xFF00)>>8))/255.0blue:((float)(rgbValue&0xFF))/255.0alpha:1.0]
5.通知
//获取通知中心 #defineNotificationCenter[NSNotificationCenterdefaultCenter] //快速发通知 #definePost_Notify(_notificationName,_obj,_userInfoDictionary)[[NSNotificationCenterdefaultCenter]postNotificationName:_notificationNameobject:_objuserInfo:_userInfoDictionary]; //添加观察者 #defineAdd_Observer(_notificationName,_observer,_observerSelector,_obj)[[NSNotificationCenterdefaultCenter]addObserver:_observerselector:@selector(_observerSelector)name:_notificationNameobject:_obj]; //移除观察者 #defineRemove_Observer(_observer)[[NSNotificationCenterdefaultCenter]removeObserver:_observer];
6.数据存储
//NSUserDefaults实例化 #defineUSER_DEFAULT[NSUserDefaultsstandardUserDefaults] //获取temp #definekPathTempNSTemporaryDirectory() //获取沙盒Document #definekPathDocument[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)firstObject] //获取沙盒Cache #definekPathCache[NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)firstObject]
7.单例模式
#defineSingleH(name)+(instancetype)share##name; #if__has_feature(objc_arc) //条件满足ARC #defineSingleM(name)staticid_instance;\ +(instancetype)allocWithZone:(struct_NSZone*)zone\ {\ staticdispatch_once_tonceToken;\ dispatch_once(&onceToken,^{\ _instance=[superallocWithZone:zone];\ });\ \ return_instance;\ }\ \ +(instancetype)share##name\ {\ return[[selfalloc]init];\ }\ \ -(id)copyWithZone:(NSZone*)zone\ {\ return_instance;\ }\ \ -(id)mutableCopyWithZone:(NSZone*)zone\ {\ return_instance;\ } #else //MRC #defineSingleM(name)staticid_instance;\ +(instancetype)allocWithZone:(struct_NSZone*)zone\ {\ staticdispatch_once_tonceToken;\ dispatch_once(&onceToken,^{\ _instance=[superallocWithZone:zone];\ });\ \ return_instance;\ }\ \ +(instancetype)share##name\ {\ return[[selfalloc]init];\ }\ \ -(id)copyWithZone:(NSZone*)zone\ {\ return_instance;\ }\ \ -(id)mutableCopyWithZone:(NSZone*)zone\ {\ return_instance;\ }\ -(onewayvoid)release\ {\ }\ \ -(instancetype)retain\ {\ return_instance;\ }\ \ -(NSUInteger)retainCount\ {\ returnMAXFLOAT;\ } #endif
8.时间
//获取系统时间戳 #defineCurentTime[NSStringstringWithFormat:@"%ld",(long)[[NSDatedate]timeIntervalSince1970]]
9.权限
//获取相机权限状态 #defineCameraStatus[AVCaptureDeviceauthorizationStatusForMediaType:AVMediaTypeVideo] #defineCameraDenied((CameraStatus==AVAuthorizationStatusRestricted)||(CameraStatus==AVAuthorizationStatusDenied)) #defineCameraAllowed(!CameraDenyed) /**定位权限*/ #defineLocationStatus[CLLocationManagerauthorizationStatus]; #defineLocationAllowed([CLLocationManagerlocationServicesEnabled]&&!((status==kCLAuthorizationStatusDenied)||(status==kCLAuthorizationStatusRestricted))) #defineLocationDenied(!LocationAllowed) /**消息推送权限*/ #definePushClose(([[UIDevicecurrentDevice].systemVersionfloatValue]>=8.0f)?(UIUserNotificationTypeNone==[[UIApplicationsharedApplication]currentUserNotificationSettings].types):(UIRemoteNotificationTypeNone==[[UIApplicationsharedApplication]enabledRemoteNotificationTypes])) #definePushOpen(!PushClose)
10.本地文件加载
#defineLoadImage(file,type)[UIImageimageWithContentsOfFile:[[NSBundlemainBundle]pathForResource:fileofType:type]] #defineLoadArray(file,type)[NSArrayarrayWithContentsOfFile:[[NSBundlemainBundle]pathForResource:fileofType:type]] #defineLoadDict(file,type)[NSDictionarydictionaryWithContentsOfFile:[[NSBundlemainBundle]pathForResource:fileofType:type]]
11.Block
//弱引用 #defineWeakWithNameAndObject(obj,name)__weaktypeof(obj)weak##name=obj //强引用 #defineStrongWithNameAndObject(obj,name)__strongtypeof(obj)strong##name=obj
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。