iOS開發(fā)常用宏
作者:佚名
大家都是知道使用宏不僅方便,而且可以提高開發(fā)效率。下面總結(jié)了iOS開發(fā)過程中的一些常用宏,會(huì)持續(xù)的往里面添加。
大家都是知道使用宏不僅方便,而且可以提高開發(fā)效率。下面總結(jié)了iOS開發(fā)過程中的一些常用宏,會(huì)持續(xù)的往里面添加。
- //字符串是否為空
- #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO )
- //數(shù)組是否為空
- #define kArrayIsEmpty(array) (array == nil || [array isKindOfClass:[NSNull class]] || array.count == 0)
- //字典是否為空
- #define kDictIsEmpty(dic) (dic == nil || [dic isKindOfClass:[NSNull class]] || dic.allKeys == 0)
- //是否是空對(duì)象
- #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)] ? [UIScreenmainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale : [UIScreen mainScreen].bounds.size.width)
- #define kScreenHeight \
- ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? [UIScreenmainScreen].nativeBounds.size.height/[UIScreen mainScreen].nativeScale : [UIScreen mainScreen].bounds.size.height)
- #define kScreenSize \
- ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? CGSizeMake([UIScreenmainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale,[UIScreenmainScreen].nativeBounds.size.height/[UIScreen mainScreen].nativeScale) : [UIScreen mainScreen].bounds.size)
- //一些縮寫
- #define kApplication [UIApplication sharedApplication]
- #define kKeyWindow [UIApplication sharedApplication].keyWindow
- #define kAppDelegate [UIApplication sharedApplication].delegate
- #define kUserDefaults [NSUserDefaults standardUserDefaults]
- #define kNotificationCenter [NSNotificationCenter defaultCenter]
- //APP版本號(hào)
- #define kAppVersion [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]
- //系統(tǒng)版本號(hào)
- #define kSystemVersion [[UIDevice currentDevice] systemVersion]
- //獲取當(dāng)前語言
- #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]
- //判斷是真機(jī)還是模擬器
- #if TARGET_OS_IPHONE
- //真機(jī)
- #endif
- #if TARGET_IPHONE_SIMULATOR
- //模擬器
- #endif
- //開發(fā)的時(shí)候打印,但是發(fā)布的時(shí)候不打印的NSLog
- #ifdef DEBUG
- #define NSLog(...) NSLog(@"%s 第%d行 \n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__])
- #else
- #define NSLog(...)
- #endif
- //顏色
- #define kRGBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]
- #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)
- #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]
- //弱引用/強(qiáng)引用
- #define kWeakSelf(type) __weak typeof(type) weak##type = type;
- #define kStrongSelf(type) __strong typeof(type) type = weak##type;
- //由角度轉(zhuǎn)換弧度
- #define kDegreesToRadian(x) (M_PI * (x) / 180.0)
- //由弧度轉(zhuǎn)換角度
- #define kRadianToDegrees(radian) (radian * 180.0) / (M_PI)
- //獲取一段時(shí)間間隔
- #define kStartTime CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
- #define kEndTime NSLog(@"Time: %f", CFAbsoluteTimeGetCurrent() - start)
責(zé)任編輯:龐桂玉
來源:
iOS大全