ios 常用宏定义

虽然这是一篇介绍常用宏定义的文章,先介绍下这个的缺点

使用:你可以把代码中一些常用复杂的方法打包成宏定义来使用


log
// DEBUG  模式下打印日志,当前行  
#ifdef DEBUG  
#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);  
#else  
#   define DLog(...)  
#endif  

//
#ifdef DEBUG
#define JSLog(...) NSLog(__VA_ARGS__)
#else
#define JSLog(...)
#endif

线程

// 单例
#define DISPATCH_ONCE_BLOCK(onceBlock) static dispatch_once_t onceToken; dispatch_once(&onceToken, onceBlock);
// 在Main线程上运行
#define DISPATCH_ON_MAIN_THREAD(mainQueueBlock) dispatch_async(dispatch_get_main_queue(), mainQueueBlock);
// 异步
#define DISPATCH_ON_GLOBAL_QUEUE_DEFAULT(globalQueueBlocl) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), globalQueueBlocl);

获取图片资源

//读取本地图片  
#define LOADIMAGE(file,ext) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:file ofType:ext]]  
  
//定义UIImage对象  
#define IMAGE(A) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:A ofType:nil]]  
  
//定义UIImage对象  
#define ImageNamed(_pointer) [UIImage imageNamed:[UIUtil imageName:_pointer]]

//建议使用前两种宏定义,性能高于后者  

颜色

// rgb颜色转换(16进制->10进制)  
#define UIColorFromRGB(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]  

获取设备大小

//NavBar高度  
#define NavigationBar_HEIGHT 44  
//获取屏幕 宽度、高度  
#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)  
#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)  

其他

//单例化一个类  
#define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \  
\  
static classname *shared##classname = nil; \  
\  
+ (classname *)shared##classname \  
{ \  
@synchronized(self) \  
{ \  
if (shared##classname == nil) \  
{ \  
shared##classname = [[self alloc] init]; \  
} \  
} \  
\  
return shared##classname; \  
} \  
\  
+ (id)allocWithZone:(NSZone *)zone \  
{ \  
@synchronized(self) \  
{ \  
if (shared##classname == nil) \  
{ \  
shared##classname = [super allocWithZone:zone]; \  
return shared##classname; \  
} \  
} \  
\  
return nil; \  
} \  
\  
- (id)copyWithZone:(NSZone *)zone \  
{ \  
return self; \  
}  

推荐阅读更多精彩内容