zoukankan      html  css  js  c++  java
  • iOS常用宏 定义

    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行 
       %@
      
      ",__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
      
  • 相关阅读:
    记一道乘法&加法线段树(模版题)
    2021CCPC网络赛(重赛)题解
    Codeforces Round #747 (Div. 2)题解
    F. Mattress Run 题解
    Codeforces Round #744 (Div. 3) G题题解
    AtCoder Beginner Contest 220部分题(G,H)题解
    Educational Codeforces Round 114 (Rated for Div. 2)题解
    Codeforces Global Round 16题解
    Educational Codeforces Round 113 (Rated for Div. 2)题解
    AtCoder Beginner Contest 182 F
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/11175677.html
Copyright © 2011-2022 走看看