美文网首页
iOS中常用的宏定义

iOS中常用的宏定义

作者: 梦在旅途 | 来源:发表于2016-07-29 15:43 被阅读119次
    判断真机还是模拟器运行代码
    // 真机
    #if TARGET_OS_IPHONE  
    #endif  
    // 模拟器
    #if TARGET_IPHONE_SIMULATOR  
    #endif  
    
    系统版本
    #define IOS8_OR_LATER ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0)
    
    颜色宏定义
    #define RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1]
    #define RGBACOLOR(r,g,b,a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)]
    #define HEXCOLOR(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 SCREEN_HEIGHT [[UIScreen mainScreen] bounds].size.height
    #define SCREEN_WIDTH  [[UIScreen mainScreen] bounds].size.width
    
    自定义打印
    #ifdef DEBUG
    #define JSLog(FORMAT, ...) fprintf(stderr,"%s:%d\t%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
    #else
    #define JSLog(FORMAT, ...) nil
    #endif
    
    本地保存
    #define JSDefault [NSUserDefaults standardUserDefaults]
    
    空对象判断
    //是否为空或是[NSNull null]
    #define NotNilAndNull(_ref)  (((_ref) != nil) && (![(_ref) isEqual:[NSNull null]]))
    #define IsNilOrNull(_ref)   (((_ref) == nil) || ([(_ref) isEqual:[NSNull null]]))
    //字符串是否为空
    #define IsStringEmpty(_ref)    (((_ref) == nil) || ([(_ref) isEqual:[NSNull null]]) ||([(_ref)isEqualToString:@""]))
    //数组是否为空
    #define IsArrayEmpty(_ref)    (((_ref) == nil) || ([(_ref) isEqual:[NSNull null]]) ||([(_ref) count] == 0))
    
    线程执行方法
    #define Foreground_Begin  dispatch_async(dispatch_get_main_queue(), ^{
    #define Foreground_End    });
    
    #define Background_Begin  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{\
                                    @autoreleasepool {
    #define Background_End          }\
                              });
    
    宏判断ARC和非ARC
    #if __has_feature(objc_arc)  
    // ARC
    #else  
    // 非ARC
    #endif  
    
    角度和弧度转化
    #define degreesToRadian(x) (M_PI * (x) / 180.0)
    #define radianToDegrees(radian) (radian*180.0)/(M_PI)
    
    用宏创建一个类的单例
    #undef  AS_SINGLETON
    #define AS_SINGLETON( __class ) \
    + (__class *)sharedInstance;
    
    #undef  DEF_SINGLETON
    #define DEF_SINGLETON( __class ) \
    + (__class *)sharedInstance \
    { \
    static dispatch_once_t once; \
    static __class * __singleton__; \
    dispatch_once( &once, ^{ __singleton__ = [[__class alloc] init]; } ); \
    return __singleton__; \
    }
    
    防止循环引用的强弱指针
    #define WeakSelf(type)  __weak typeof(type) weak##type = type;
    #define StrongSelf(type)  __strong typeof(type) type = weak##type;
    
    设置UIView圆角
    #define ViewBorderRadius(View, Radius, Width, Color)\
    \
    [View.layer setCornerRadius:(Radius)];\
    [View.layer setMasksToBounds:YES];\
    [View.layer setBorderWidth:(Width)];\
    [View.layer setBorderColor:[Color CGColor]]
    
    角度弧度互转
    #define DegreesToRadian(x) (M_PI * (x) / 180.0)
    #define RadianToDegrees(radian) (radian*180.0)/(M_PI)
    
    沙盒目录
    //获取temp#define kPathTemp NSTemporaryDirectory()//获取沙盒 Document#define kPathDocument [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]//获取沙盒 Cache#define kPathCache [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]
    

    未完,待续。。。

    相关文章

      网友评论

          本文标题:iOS中常用的宏定义

          本文链接:https://www.haomeiwen.com/subject/zoezjttx.html