博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS常用宏 定义
阅读量:5073 次
发布时间:2019-06-12

本文共 3934 字,大约阅读时间需要 13 分钟。

iOS开发过程中,使用的一些常用宏定义

  • 字符串是否为空

    #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO )
  • 数组是否为空

    #define kArrayIsEmpty(array) (array == nil || [array isKindOfClass:[NSNull class]] || array.count == 0)
  • 字典是否为空

    #define kDictIsEmpty(dic) (dic == nil || [dic isKindOfClass:[NSNull class]] || dic.allKeys == 0)

  • 是否是空对象

    #define kObjectIsEmpty(_object) (_object == nil \|| [_object isKindOfClass:[NSNull class]] \ || ([_object respondsToSelector:@selector(length)] && [(NSData *)_object length] == 0) \ || ([_object respondsToSelector:@selector(count)] && [(NSArray *)_object count] == 0))

  • 获取屏幕宽度与高度 ( " \ ":连接行标志,连接上下两行 )

    //屏宽#define kScreenWidth \([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? [UIScreen mainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale : [UIScreen mainScreen].bounds.size.width) //屏高 #define kScreenHeight \ ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? [UIScreen mainScreen].nativeBounds.size.height/[UIScreen mainScreen].nativeScale : [UIScreen mainScreen].bounds.size.height) //屏的size(宽、高) #define kScreenSize \ ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? CGSizeMake([UIScreen mainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale,[UIScreen mainScreen].nativeBounds.size.height/[UIScreen mainScreen].nativeScale) : [UIScreen mainScreen].bounds.size)

  • 一些常用缩写

    //APP对象 (单例对象)#define kApplication [UIApplication sharedApplication]//主窗口 (keyWindow) #define kKeyWindow [UIApplication sharedApplication].keyWindow //APP对象的delegate #define kAppDelegate [UIApplication sharedApplication].delegate //NSUserDefaults实例化 #define kUserDefaults [NSUserDefaults standardUserDefaults] //通知中心 (单例对象) #define kNotificationCenter [NSNotificationCenter defaultCenter]

  • APP版本号

    #define kAppVersion [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]
  • 系统版本号

    #define kSystemVersion [[UIDevice currentDevice] systemVersion]
  • 获取当前语言

    #define kCurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])

  • 判断是否为iPhone

    #define kISiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
  • 判断是否为iPad

    #define kISiPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

  • 获取沙盒的Document路径

    #define kDocumentPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]
  • 获取沙盒的temp路径

    #define kTempPath NSTemporaryDirectory()
  • 获取沙盒的Cache路径

    #define kCachePath [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]

  • 判断是真机还是模拟器

    #if TARGET_OS_IPHONE//真机#endif #if TARGET_IPHONE_SIMULATOR //模拟器 #endif

  • 开发的时候打印,但是发布的时候不打印的NSLog

    #ifdef DEBUG#define NSLog(...) NSLog(@"%s 第%d行 \n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__]) #else #define NSLog(...) #endif

  • 颜色

    //RGB格式#define kRGBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]//RGBA格式 (A:alpha) #define kRGBAColor(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(r)/255.0 blue:(r)/255.0 alpha:a] //随机色生成 #define kRandomColor KRGBColor(arc4random_uniform(256)/255.0,arc4random_uniform(256)/255.0,arc4random_uniform(256)/255.0) //16进制形式 #define kColorWithHex(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 kWeakSelf(type)  __weak typeof(type) weak##type = type;#define kStrongSelf(type) __strong typeof(type) type = weak##type;

  • 由角度转换为弧度

    #define kDegreesToRadian(x) (M_PI * (x) / 180.0)
  • 由弧度转换为角度

    #define kRadianToDegrees(radian) (radian * 180.0) / (M_PI)

  • 获取一段时间间隔

    #define kStartTime CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();#define kEndTime NSLog(@"Time: %f", CFAbsoluteTimeGetCurrent() - start)

  • (指令)定义

    #ifndef MacroDefinition_h  //如果没定义#define MacroDefinition_h

转载于:https://www.cnblogs.com/Free-Thinker/p/11175677.html

你可能感兴趣的文章
硬件笔记之Thinkpad T470P更换2K屏幕
查看>>
iOS开发——缩放图片
查看>>
HTTP之URL的快捷方式
查看>>
满世界都是图论
查看>>
配置链路聚合中极小错误——失之毫厘谬以千里
查看>>
蓝桥杯-分小组-java
查看>>
Android Toast
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
JAVA面试常见问题之Redis篇
查看>>
jdk1.8 api 下载
查看>>
getElement的几中属性介绍
查看>>
HTML列表,表格与媒体元素
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>
数据结构3——浅谈zkw线段树
查看>>
Introduction to my galaxy engine 2: Depth of field
查看>>
设计器 和后台代码的转换 快捷键
查看>>
STL容器之vector
查看>>