美文网首页
常用宏定义

常用宏定义

作者: 高思阳 | 来源:发表于2019-07-16 14:44 被阅读0次
优点
  • 提高了程序的可读性,同时也方便进行修改,用户只需要在一处定义,多处使用,修改也只需要修改一处

  • 提高程序的运行效率:使用带参的宏定义既可完成函数调用的功能,又能避免函数的出栈与入栈操作,减少系统开销,提高运行效率,如果有一个函数会在工程中频繁使用,可以考虑一下宏定义

缺点
  • 由于是直接嵌入的,所以代码可能相对多一点

  • 嵌套定义过多可能会影响程序的可读性,而且很容易出错;

  • 对带参的宏而言,由于是直接替换,并不会检查参数是否合法,存在安全隐患。说白了,预编译语句仅仅是简单的值代替,缺乏类型的检测机制


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; \  
}  

相关文章

  • iOS 常用宏定义

    常用宏定义

  • iOS开发常用的宏定义

    Objective-C常用宏/*! 字体 */ /*! 颜色宏定义 */ /*! 弱引用宏 */ /*! 输出显示...

  • 常用宏定义

    // HGBMacroConfig.h #ifndef HGBMacroConfig_h #define HGBM...

  • 常用宏定义

    //屏幕尺寸 define SCREEN_WIDTH [UIScreen mainScreen].bounds...

  • 常用宏定义

    1.color #define COlOR(R,G,B,A) [UIColor colorWithRed:(R)/...

  • 常用宏定义

    1、屏幕尺寸 2、UIView相关 3、常用颜色 4、手机版本 5、沙盒

  • 常用宏定义

    未完待续 持续更新中 1. 字符串判空处理 2.获取屏幕宽高 3.Log输出样式修改 呈现效果 4.宏定义单例 5...

  • 常用宏定义

    优点 提高了程序的可读性,同时也方便进行修改,用户只需要在一处定义,多处使用,修改也只需要修改一处 提高程序的运行...

  • iOS 常用宏定义

    iOS 开发中使用一些常用宏定义可以大大提高开发效率,提高代码的重用性.以下是一些常用的宏定义: 像这些宏定义,在...

  • 宏定义指令

    常用的宏定义指令 详细应用

网友评论

      本文标题:常用宏定义

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