iOS 开发常用宏总结
大家都是知道使用宏不仅方便,而且可以提高开发效率。下面总结了iOS开发过程中的一些常用宏,会持续的往里面添加。
Objective-C
//字符串是否为空 #definekStringIsEmpty(str)([strisKindOfClass:[NSNullclass]]||str==nil||[strlength]<1?YES:NO) //数组是否为空 #definekArrayIsEmpty(array)(array==nil||[arrayisKindOfClass:[NSNullclass]]||array.count==0) //字典是否为空 #definekDictIsEmpty(dic)(dic==nil||[dicisKindOfClass:[NSNullclass]]||dic.allKeys==0) //是否是空对象 #definekObjectIsEmpty(_object)(_object==nil\ ||[_objectisKindOfClass:[NSNullclass]]\ ||([_objectrespondsToSelector:@selector(length)]&&[(NSData*)_objectlength]==0)\ ||([_objectrespondsToSelector:@selector(count)]&&[(NSArray*)_objectcount]==0)) //获取屏幕宽度与高度 #definekScreenWidth\ ([[UIScreenmainScreen]respondsToSelector:@selector(nativeBounds)]?[UIScreenmainScreen].nativeBounds.size.width/[UIScreenmainScreen].nativeScale:[UIScreenmainScreen].bounds.size.width) #definekScreenHeight\ ([[UIScreenmainScreen]respondsToSelector:@selector(nativeBounds)]?[UIScreenmainScreen].nativeBounds.size.height/[UIScreenmainScreen].nativeScale:[UIScreenmainScreen].bounds.size.height) #definekScreenSize\ ([[UIScreenmainScreen]respondsToSelector:@selector(nativeBounds)]?CGSizeMake([UIScreenmainScreen].nativeBounds.size.width/[UIScreenmainScreen].nativeScale,[UIScreenmainScreen].nativeBounds.size.height/[UIScreenmainScreen].nativeScale):[UIScreenmainScreen].bounds.size) //一些缩写 #definekApplication[UIApplicationsharedApplication] #definekKeyWindow[UIApplicationsharedApplication].keyWindow #definekAppDelegate[UIApplicationsharedApplication].delegate #definekUserDefaults[NSUserDefaultsstandardUserDefaults] #definekNotificationCenter[NSNotificationCenterdefaultCenter] //APP版本号 #definekAppVersion[[[NSBundlemainBundle]infoDictionary]objectForKey:@"CFBundleShortVersionString"] //系统版本号 #definekSystemVersion[[UIDevicecurrentDevice]systemVersion] //获取当前语言 #definekCurrentLanguage([[NSLocalepreferredLanguages]objectAtIndex:0]) //判断是否为iPhone #definekISiPhone(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone) //判断是否为iPad #definekISiPad(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) //获取沙盒Document路径 #definekDocumentPath[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)firstObject] //获取沙盒temp路径 #definekTempPathNSTemporaryDirectory() //获取沙盒Cache路径 #definekCachePath[NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)firstObject] //判断是真机还是模拟器 #ifTARGET_OS_IPHONE //真机 #endif #ifTARGET_IPHONE_SIMULATOR //模拟器 #endif //开发的时候打印,但是发布的时候不打印的NSLog #ifdefDEBUG #defineNSLog(...)NSLog(@"%s第%d行\n%@\n\n",__func__,__LINE__,[NSStringstringWithFormat:__VA_ARGS__]) #else #defineNSLog(...) #endif //颜色 #definekRGBColor(r,g,b)[UIColorcolorWithRed:(r)/255.0green:(g)/255.0blue:(b)/255.0alpha:1.0] #definekRGBAColor(r,g,b,a)[UIColorcolorWithRed:(r)/255.0green:(r)/255.0blue:(r)/255.0alpha:a] #definekRandomColorKRGBColor(arc4random_uniform(256)/255.0,arc4random_uniform(256)/255.0,arc4random_uniform(256)/255.0) #definekColorWithHex(rgbValue)\ [UIColorcolorWithRed:((float)((rgbValue&0xFF0000)>>16))/255.0\ green:((float)((rgbValue&0xFF00)>>8))/255.0\ blue:((float)(rgbValue&0xFF))/255.0alpha:1.0] //弱引用/强引用 #definekWeakSelf(type)__weaktypeof(type)weak##type=type; #definekStrongSelf(type)__strongtypeof(type)type=weak##type; //由角度转换弧度 #definekDegreesToRadian(x)(M_PI*(x)/180.0) //由弧度转换角度 #definekRadianToDegrees(radian)(radian*180.0)/(M_PI) //获取一段时间间隔 #definekStartTimeCFAbsoluteTimestart=CFAbsoluteTimeGetCurrent(); #definekEndTimeNSLog(@"Time:%f",CFAbsoluteTimeGetCurrent()-start)
1.定义尺寸类的宏
DimensMacros.h //状态栏高度 #defineSTATUS_BAR_HEIGHT20 //NavBar高度 #defineNAVIGATION_BAR_HEIGHT44 //状态栏+导航栏高度 #defineSTATUS_AND_NAVIGATION_HEIGHT((STATUS_BAR_HEIGHT)+(NAVIGATION_BAR_HEIGHT)) //屏幕rect #defineSCREEN_RECT([UIScreenmainScreen].bounds) #defineSCREEN_WIDTH([UIScreenmainScreen].bounds.size.width) #defineSCREEN_HEIGHT([UIScreenmainScreen].bounds.size.height) #defineCONTENT_HEIGHT(SCREEN_HEIGHT-NAVIGATION_BAR_HEIGHT-STATUS_BAR_HEIGHT) //屏幕分辨率 #defineSCREEN_RESOLUTION(SCREEN_WIDTH*SCREEN_HEIGHT*([UIScreenmainScreen].scale)) //广告栏高度 #defineBANNER_HEIGHT215 #defineSTYLEPAGE_HEIGHT21 #defineSMALLTV_HEIGHT77 #defineSMALLTV_WIDTH110 #defineFOLLOW_HEIGHT220 #defineSUBCHANNEL_HEIGHT62
2.定义沙盒目录文件的宏
PathMacros.h //文件目录 #definekPathTempNSTemporaryDirectory() #definekPathDocument[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0] #definekPathCache[NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)objectAtIndex:0] #definekPathSearch[kPathDocumentstringByAppendingPathComponent:@"Search.plist"] #definekPathMagazine[kPathDocumentstringByAppendingPathComponent:@"Magazine"] #definekPathDownloadedMgzs[kPathMagazinestringByAppendingPathComponent:@"DownloadedMgz.plist"] #definekPathDownloadURLs[kPathMagazinestringByAppendingPathComponent:@"DownloadURLs.plist"] #definekPathOperation[kPathMagazinestringByAppendingPathComponent:@"Operation.plist"] #definekPathSplashScreen[kPathCachestringByAppendingPathComponent:@"splashScreen"] #endif
3.工具类的宏
UtilsMacros.h //Logutilsmarco #defineALog(fmt,...)NSLog((@"%s[Line%d]"fmt),__PRETTY_FUNCTION__,__LINE__,##__VA_ARGS__); #ifdefDEBUG #defineDLog(fmt,...)NSLog((@"%s[Line%d]"fmt),__PRETTY_FUNCTION__,__LINE__,##__VA_ARGS__); #else #defineDLog(...) #endif #ifdefDEBUG #defineULog(...) //#defineULog(fmt,...){UIAlertView*alert=[[UIAlertViewalloc]initWithTitle:[NSStringstringWithFormat:@"%s\n[Line%d]",__PRETTY_FUNCTION__,__LINE__]message:[NSStringstringWithFormat:fmt,##__VA_ARGS__]delegate:nilcancelButtonTitle:@"Ok"otherButtonTitles:nil];[alertshow];} #else #defineULog(...) #endif //Systemversionutils #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) //获取RGB颜色 #defineRGBA(r,g,b,a)[UIColorcolorWithRed:r/255.0fgreen:g/255.0fblue:b/255.0falpha:a] #defineRGB(r,g,b)RGBA(r,g,b,1.0f) #defineIsPortrait([UIApplicationsharedApplication].statusBarOrientation==UIInterfaceOrientationPortrait||[UIApplicationsharedApplication].statusBarOrientation==UIInterfaceOrientationPortraitUpsideDown) #defineIsNilOrNull(_ref)(((_ref)==nil)||([(_ref)isEqual:[NSNullnull]])) //角度转弧度 #defineDEGREES_TO_RADIANS(d)(d*M_PI/180) //大于等于7.0的ios版本 #defineiOS7_OR_LATERSYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0") //大于等于8.0的ios版本 #defineiOS8_OR_LATERSYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0") //iOS6时,导航VC中view的起始高度 #defineYH_HEIGHT(iOS7_OR_LATER?64:0) //获取系统时间戳 #definegetCurentTime[NSStringstringWithFormat:@"%ld",(long)[[NSDatedate]timeIntervalSince1970]]
4.通知Notification相关的宏
NotificationMacros.h //系统Notification定义 #defineTNCancelFavoriteProductNotification@"TNCancelFavoriteProductNotification"//取消收藏时 #defineTNMarkFavoriteProductNotification@"TNMarkFavoriteProductNotification"//标记收藏时 #definekNotficationDownloadProgressChanged@"kNotficationDownloadProgressChanged"//下载进度变化 #definekNotificationPauseDownload@"kNotificationPauseDownload"//暂停下载 #definekNotificationStartDownload@"kNotificationStartDownload"//开始下载 #definekNotificationDownloadSuccess@"kNotificationDownloadSuccess"//下载成功 #definekNotificationDownloadFailed@"kNotificationDownloadFailed"//下载失败 #definekNotificationDownloadNewMagazine@"kNotificationDownloadNewMagazine" 服务端API接口的宏 APIStringMacros.h ////////////////////////////////////////////////////////////////////////////////////////////////// //接口名称相关 #ifdefDEBUG //Debug状态下的测试API #defineAPI_BASE_URL_STRING@"http://boys.test.companydomain.com/api/" #else //Release状态下的线上API #defineAPI_BASE_URL_STRING@"http://www.companydomain.com/api/" #endif //接口 #defineGET_CONTENT_DETAIL@"channel/getContentDetail"//获取内容详情(含上一个和下一个) #defineGET_COMMENT_LIST@"comment/getCommentList"//获取评论列表 #defineCOMMENT_LOGIN@"comment/login"//获取评论列表 #defineCOMMENT_PUBLISH@"comment/publish"//发布评论 #defineCOMMENT_DELETE@"comment/delComment"//删除评论 #defineLOGINOUT@"common/logout"//登出 还有很多其他类型的宏,此处不一一列举 创建一个import所有宏相关的文件Macros.h Macros.h #import"UtilsMacros.h" #import"APIStringMacros.h" #import"DimensMacros.h" #import"NotificationMacros.h" #import"SharePlatformMacros.h" #import"StringMacros.h" #import"UserBehaviorMacros.h" #import"PathMacros.h" 在xcode项目的pch文件中,导入Macros.h文件 XcodeProjectName-Prefix.pch #ifdef__OBJC__ #import<UIKit/UIKit.h> #import<Foundation/Foundation.h> #import"Macros.h" #endif
以上就是IOS常用宏的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!