欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS常用宏定义

程序员文章站 2022-05-09 20:51:08
iOS常用宏定义。 字符串是否为空 #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str...

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)

#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)

一些常用的缩写

#define kApplication [UIApplication sharedApplication]

#define kKeyWindow [UIApplication sharedApplication].keyWindow

#define kAppDelegate [UIApplication sharedApplication].delegate

#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

颜色

#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]

弱引用/强引用

#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

获取设备尺寸大小

NavBar高度

#define NavigationBar_HEIGHT 44

获取屏幕 宽度、高度

#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)

#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)

打印日志

DEBUG 模式下打印日志,当前行

#ifdef DEBUG

# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

#else

# define DLog(...)

#endif

重写NSLog,Debug模式下打印日志和当前行数

#if DEBUG

#define NSLog(FORMAT, ...) fprintf(stderr,"\nfunction:%s line:%d content:%s\n", __FUNCTION__, __LINE__, [NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);

#else

#define NSLog(FORMAT, ...) nil

#endif

DEBUG 模式下打印日志,当前行 并弹出一个警告

#ifdef DEBUG

# define ULog(fmt, ...) { UIAlertView *alert = [UIAlertView alloc] initWithTitle:[NSString stringWithFormat:

@"%s\n [Line %d] ", __PRETTY_FUNCTION__, __LINE__] message:[NSString stringWithFormat:fmt, ##__VA_ARGS__]

delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; }

#else

# define ULog(...)

#endif

#define ITTDEBUG

#define ITTLOGLEVEL_INFO 10

#define ITTLOGLEVEL_WARNING 3

#define ITTLOGLEVEL_ERROR 1

#ifndef ITTMAXLOGLEVEL

#ifdef DEBUG

#define ITTMAXLOGLEVEL ITTLOGLEVEL_INFO

#else

#define ITTMAXLOGLEVEL ITTLOGLEVEL_ERROR

#endif

#endif

The general purpose logger. This ignores logging levels.

#ifdef ITTDEBUG

#define ITTDPRINT(xx, ...) NSLog(@"%s(%d): " xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)

#else

#define ITTDPRINT(xx, ...) ((void)0)

#endif

打印当前方法的名称

#define ITTDPRINTMETHODNAME() ITTDPRINT(@"%s", __PRETTY_FUNCTION__)

Log-level based logging macros.

#if ITTLOGLEVEL_ERROR <= ITTMAXLOGLEVEL

#define ITTDERROR(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__)

#else

#define ITTDERROR(xx, ...) ((void)0)

#endif

#if ITTLOGLEVEL_WARNING <= ITTMAXLOGLEVEL

#define ITTDWARNING(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__)

#else

#define ITTDWARNING(xx, ...) ((void)0)

#endif

#if ITTLOGLEVEL_INFO <= ITTMAXLOGLEVEL

#define ITTDINFO(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__)

#else

#define ITTDINFO(xx, ...) ((void)0)

#endif

#ifdef ITTDEBUG

#define ITTDCONDITIONLOG(condition, xx, ...) { if ((condition)) { \

ITTDPRINT(xx, ##__VA_ARGS__); \

} \

} ((void)0)

#else

#define ITTDCONDITIONLOG(condition, xx, ...) ((void)0)

#endif

#define ITTAssert(condition, ...) \

do { \

if (!(condition)) { \

[NSAssertionHandler currentHandler] \

handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] \

file:[NSString stringWithUTF8String:__FILE__] \

lineNumber:__LINE__ \

description:__VA_ARGS__]; \

} \

} while(0)

系统

是否iPad

#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

是否iPad

#define someThing (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)? ipad: iphone

获取系统版本

#define IOS_VERSION [[UIDevice currentDevice] systemVersion] floatValue]

#define CurrentSystemVersion [UIDevice currentDevice] systemVersion]

获取当前语言

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