iOS开发常用宏

大家都是知道使用宏不仅方便,而且可以提高开发效率。下面总结了iOS开发过程中的一些常用宏,会持续的往里面添加。


  1. //字符串是否为空 
  2. #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO ) 
  3. //数组是否为空 
  4. #define kArrayIsEmpty(array) (array == nil || [array isKindOfClass:[NSNull class]] || array.count == 0) 
  5. //字典是否为空 
  6. #define kDictIsEmpty(dic) (dic == nil || [dic isKindOfClass:[NSNull class]] || dic.allKeys == 0) 
  7. //是否是空对象 
  8. #define kObjectIsEmpty(_object) (_object == nil \ 
  9. || [_object isKindOfClass:[NSNull class]] \ 
  10. || ([_object respondsToSelector:@selector(length)] && [(NSData *)_object length] == 0) \ 
  11. || ([_object respondsToSelector:@selector(count)] && [(NSArray *)_object count] == 0)) 
  12.   
  13. //获取屏幕宽度与高度 
  14. #define kScreenWidth \ 
  15. ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? [UIScreenmainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale : [UIScreen mainScreen].bounds.size.width) 
  16. #define kScreenHeight \ 
  17. ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? [UIScreenmainScreen].nativeBounds.size.height/[UIScreen mainScreen].nativeScale : [UIScreen mainScreen].bounds.size.height) 
  18. #define kScreenSize \ 
  19. ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? CGSizeMake([UIScreenmainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale,[UIScreenmainScreen].nativeBounds.size.height/[UIScreen mainScreen].nativeScale) : [UIScreen mainScreen].bounds.size) 
  20.   
  21. //一些缩写 
  22. #define kApplication        [UIApplication sharedApplication] 
  23. #define kKeyWindow          [UIApplication sharedApplication].keyWindow 
  24. #define kAppDelegate        [UIApplication sharedApplication].delegate 
  25. #define kUserDefaults       [NSUserDefaults standardUserDefaults] 
  26. #define kNotificationCenter [NSNotificationCenter defaultCenter] 
  27.   
  28. //APP版本号 
  29. #define kAppVersion [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] 
  30. //系统版本号 
  31. #define kSystemVersion [[UIDevice currentDevice] systemVersion] 
  32. //获取当前语言 
  33. #define kCurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0]) 
  34. //判断是否为iPhone 
  35. #define kISiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
  36. //判断是否为iPad 
  37. #define kISiPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
  38.   
  39. //获取沙盒Document路径 
  40. #define kDocumentPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] 
  41. //获取沙盒temp路径 
  42. #define kTempPath NSTemporaryDirectory() 
  43. //获取沙盒Cache路径 
  44. #define kCachePath [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject] 
  45.   
  46. //判断是真机还是模拟器 
  47. #if TARGET_OS_IPHONE 
  48. //真机 
  49. #endif 
  50.   
  51. #if TARGET_IPHONE_SIMULATOR 
  52. //模拟器 
  53. #endif 
  54.   
  55. //开发的时候打印,但是发布的时候不打印的NSLog 
  56. #ifdef DEBUG 
  57. #define NSLog(...) NSLog(@"%s 第%d行 \n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__]) 
  58. #else 
  59. #define NSLog(...) 
  60. #endif 
  61.   
  62. //颜色 
  63. #define kRGBColor(r, g, b)     [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0] 
  64. #define kRGBAColor(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(r)/255.0 blue:(r)/255.0 alpha:a] 
  65. #define kRandomColor  KRGBColor(arc4random_uniform(256)/255.0,arc4random_uniform(256)/255.0,arc4random_uniform(256)/255.0) 
  66.   
  67. #define kColorWithHex(rgbValue) \ 
  68. [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16)) / 255.0 \ 
  69. green:((float)((rgbValue & 0xFF00) >> 8)) / 255.0 \ 
  70. blue:((float)(rgbValue & 0xFF)) / 255.0 alpha:1.0] 
  71.   
  72. //弱引用/强引用 
  73. #define kWeakSelf(type)   __weak typeof(type) weak##type = type; 
  74. #define kStrongSelf(type) __strong typeof(type) type = weak##type; 
  75.   
  76. //由角度转换弧度 
  77. #define kDegreesToRadian(x)      (M_PI * (x) / 180.0) 
  78. //由弧度转换角度 
  79. #define kRadianToDegrees(radian) (radian * 180.0) / (M_PI) 
  80.   
  81. //获取一段时间间隔 
  82. #define kStartTime CFAbsoluteTime start = CFAbsoluteTimeGetCurrent(); 
  83. #define kEndTime   NSLog(@"Time: %f", CFAbsoluteTimeGetCurrent() - start) 

本文作者:佚名

来源:51CTO

时间: 2024-10-26 09:19:02

iOS开发常用宏的相关文章

iOS 开发常用宏总结_IOS

大家都是知道使用宏不仅方便,而且可以提高开发效率.下面总结了iOS开发过程中的一些常用宏,会持续的往里面添加. Objective-C //字符串是否为空 #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO ) //数组是否为空 #define kArrayIsEmpty(array) (array == nil || [array

IOS开发常用的正则表达式_正则表达式

正则表达式是一种用来进行文本匹配的工具,其语法优美简洁.在开发中,查找.对比以及匹配字符串是家常便饭的业务,通过正则表达式我们将这些业务描述成某些需求规则,来让我们的代码更美观.实用.例如我们要验证用户输入的密码长度是否满足6~18位的长度,新手最常见的验证方式是判断输入的密码长度 return (textField.text.length >= 6 && textField.text.leng <= 18); 尽管这种判断方式没有任何问题,而上面的验证换做正则表达式的匹配字符

值得收藏的iOS开发常用代码块_IOS

遍历可变数组的同时删除数组元素 NSMutableArray *copyArray = [NSMutableArray arrayWithArray:array]; NSString *str1 = @"zhangsan"; for (AddressPerson *perName in copyArray) { if ([[perName name] isEqualToString:str1]) { [array removeObject:perName]; } } 获取系统当前语言

IOS开发常用的正则表达式

正则表达式是一种用来进行文本匹配的工具,其语法优美简洁.在开发中,查找.对比以及匹配字符串是家常便饭的业务,通过正则表达式我们将这些业务描述成某些需求规则,来让我们的代码更美观.实用.例如我们要验证用户输入的密码长度是否满足6~18位的长度,新手最常见的验证方式是判断输入的密码长度 return (textField.text.length >= 6 && textField.text.leng <= 18); 尽管这种判断方式没有任何问题,而上面的验证换做正则表达式的匹配字符

IOS开发--常用工具类收集整理(Objective-C)(持续更新)

 前言:整理和收集了IOS项目开发常用的工具类,最后也给出了源码下载链接. 这些可复用的工具,一定会给你实际项目开发工作锦上添花,会给你带来大大的工作效率. 重复造轮子的事情,除却自我多练习编码之外,就不要傻傻的重复造轮子了,还是提高工作效率,早点完成工作早点回家陪老婆孩子. 所以下面备份的常用工具类一定是你需要的. 前提:你有一定的开发经验,知道它们在开发的什么地方需要,你都不知道用在哪里,那你需要个毛啊,还是好好另外学好基础吧.少儿不宜,请离开哦. 插件目录列表:(持续更新和添加) 1.UI

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

图像: 1.图片浏览控件MWPhotoBrowser        实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.       下载:https://github.com/mwaterfall/MWPhotoBrowser   目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code.SourceForge等地方.由于Github社区太过主流,这里主要介绍一下Gith

转 OC之iOS开发常用Unix指令

在终端中输入指令 pwd 查看当前目录 ls 列出当前目录下所有文件 ls –l 详细列出当前目录下文件的属性 mkdir 在当前目录下新建文件夹(mkdir 文件名) touch 在当前文件夹下新建文件(touch xxx.txt) cd 改变当前目录(cd 新目录/) open 打开文件或文件夹 clear 清空终端 上下键 返回上一个指令 tab键补齐

iOS开发中常用的数学函数

iOS开发中常用的数学函数   /*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(@"结果 %.f", pow(3,2)); //result 9 NSLog(@"结果 %.f", pow(3,3)); //result 27 //开平方运算 NSLog(@"结果 %.f", sqrt(16)); //result 4 NSLog(@"结果 %.f", sqrt(81)); //result

iOS开发入门:iOS常用设计模式–委托模式

对于iOS开发,举例Cocoa框架下的几个设计模式为大家分析.当然,Cocoa框架下关于设计模式的内容远远不止这些,我们选择了常用的几种:单例模式.委托模式.观察者模式.MVC模式. 委托模式 委托模式从GoF 设计装饰(Decorator).适配器(Adapter)和模板方法(Template Method)等模式演变而来.几乎每一个应用都会或多或少地使用到委托模式.不只是CocoaTouch框架,在Cocoa框架中委托模式也得到了广泛的应用. 问题提出 对于应用生命周期的非运行状态--应用启