宏定義和宏方法

宏定義和宏方法

定義機型

#define is_iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)

#define is_iPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)

#define is_iPhone6P ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)

定義手機系統型號

#define kOSVersion [[UIDevice currentDevice].systemVersion floatValue]
#define kOS_iOS7 (OSVersion >= 7)
#define kOS_iOS8 (OSVersion >= 8)   
#define kOS_iOS9 (OSVersion >= 9)

宏定義屏幕寬度和高度

#define KScreenSize    [UIScreen mainScreen].bounds.size    
#define KScreenHeight  ([[UIScreen mainScreen] bounds].size.height)
#define KScreenWidth   ([[UIScreen mainScreen] bounds].size.width)

定義打印的東西

#define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函數名:%s]\n" "[行號:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);

通過RGB獲得一個顏色

static inline UIColor * getBackGoundColor(CGFloat r,CGFloat g,CGFloat b,CGFloat alpha){

return [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:alpha];

}

驗證手機號

static inline bool predicateIsMobilePhone(NSString * mobilePhone){

NSString * validateContent = @"1[3|5|7|8|4|][0-9]{9}";

NSPredicate *validateTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", validateContent];

return [validateTest evaluateWithObject:mobilePhone];

}

比較大小和取絕對值

#define MIN(A,B)    ((A) < (B) ? (A) : (B))

#define MAX(A,B)    ((A) > (B) ? (A) : (B))

#define ABS(A)  ((A) < 0 ? (-(A)) : (A))

隱藏方法警告的方法

#define SuppressPerformSelectorLeakWarning(Stuff) \
do { \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \
Stuff; \
_Pragma("clang diagnostic pop") \
} while (0)

添加觀察者的宏定義方法

    #define REGISTER_SELECTOR(sel, notif_name)                  \
    if([obj respondsToSelector:sel])                            \
        [[NSNotificationCenter defaultCenter]   addObserver:obj \
                                                selector:sel    \
                                                name:notif_name \
                                                object:nil      \
        ];  

驗證是不是表情
#define kChat_String_EmojiRegex @"\\[[a-zA-Z0-9\\u4e00-\\u9fa5]+\\]"


下面的宏定義方法在SDWebImage中定義
不在主線程執行block

#define dispatch_main_sync_safe(block)\
    if ([NSThread isMainThread]) {\
        block();\
    } else {\
        dispatch_sync(dispatch_get_main_queue(), block);\
    }

在主線程去執行block

    #define dispatch_main_async_safe(block)\
    if ([NSThread isMainThread]) {\
        block();\
    } else {\
        dispatch_async(dispatch_get_main_queue(), block);\
    }

參考地址

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容