1. #ifndef MacroDefinition_h
  2. #define MacroDefinition_h
  3.  
  4. //-------------------获取设备大小-------------------------
  5. //NavBar高度
  6. #define NavigationBar_HEIGHT 44
  7. //获取屏幕 宽度、高度
  8. #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)
  9. #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)
  10.  
  11. //-------------------获取设备大小-------------------------
  12.  
  13. //-------------------打印日志-------------------------
  14. //DEBUG 模式下打印日志,当前行
  15. #ifdef DEBUG
  16. # define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
  17. #else
  18. # define DLog(...)
  19. #endif
  20.  
  21. //重写NSLog,Debug模式下打印日志和当前行数
  22. #if DEBUG
  23. #define NSLog(FORMAT, ...) fprintf(stderr,"\nfunction:%s line:%d content:%s\n", __FUNCTION__, __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
  24. #else
  25. #define NSLog(FORMAT, ...) nil
  26. #endif
  27.  
  28. //DEBUG 模式下打印日志,当前行 并弹出一个警告
  29. #ifdef DEBUG
  30. # 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]; }
  31. #else
  32. # define ULog(...)
  33. #endif
  34.  
  35. #define ITTDEBUG
  36. #define ITTLOGLEVEL_INFO 10
  37. #define ITTLOGLEVEL_WARNING 3
  38. #define ITTLOGLEVEL_ERROR 1
  39.  
  40. #ifndef ITTMAXLOGLEVEL
  41.  
  42. #ifdef DEBUG
  43. #define ITTMAXLOGLEVEL ITTLOGLEVEL_INFO
  44. #else
  45. #define ITTMAXLOGLEVEL ITTLOGLEVEL_ERROR
  46. #endif
  47.  
  48. #endif
  49.  
  50. // The general purpose logger. This ignores logging levels.
  51. #ifdef ITTDEBUG
  52. #define ITTDPRINT(xx, ...) NSLog(@"%s(%d): " xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
  53. #else
  54. #define ITTDPRINT(xx, ...) ((void)0)
  55. #endif
  56.  
  57. // Prints the current method's name.
  58. #define ITTDPRINTMETHODNAME() ITTDPRINT(@"%s", __PRETTY_FUNCTION__)
  59.  
  60. // Log-level based logging macros.
  61. #if ITTLOGLEVEL_ERROR <= ITTMAXLOGLEVEL
  62. #define ITTDERROR(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__)
  63. #else
  64. #define ITTDERROR(xx, ...) ((void)0)
  65. #endif
  66.  
  67. #if ITTLOGLEVEL_WARNING <= ITTMAXLOGLEVEL
  68. #define ITTDWARNING(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__)
  69. #else
  70. #define ITTDWARNING(xx, ...) ((void)0)
  71. #endif
  72.  
  73. #if ITTLOGLEVEL_INFO <= ITTMAXLOGLEVEL
  74. #define ITTDINFO(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__)
  75. #else
  76. #define ITTDINFO(xx, ...) ((void)0)
  77. #endif
  78.  
  79. #ifdef ITTDEBUG
  80. #define ITTDCONDITIONLOG(condition, xx, ...) { if ((condition)) { \
  81. ITTDPRINT(xx, ##__VA_ARGS__); \
  82. } \
  83. } ((void))
  84. #else
  85. #define ITTDCONDITIONLOG(condition, xx, ...) ((void)0)
  86. #endif
  87.  
  88. #define ITTAssert(condition, ...) \
  89. do { \
  90. if (!(condition)) { \
  91. [[NSAssertionHandler currentHandler] \
  92. handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] \
  93. file:[NSString stringWithUTF8String:__FILE__] \
  94. lineNumber:__LINE__ \
  95. description:__VA_ARGS__]; \
  96. } \
  97. } while()
  98.  
  99. //---------------------打印日志--------------------------
  100.  
  101. //----------------------系统----------------------------
  102.  
  103. //获取系统版本
  104. #define IOS_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]
  105. #define CurrentSystemVersion [[UIDevice currentDevice] systemVersion]
  106.  
  107. //获取当前语言
  108. #define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])
  109.  
  110. //判断是否 Retina屏、设备是否%fhone 5、是否是iPad
  111. #define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)
  112. #define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
  113. #define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
  114.  
  115. //判断是真机还是模拟器
  116. #if TARGET_OS_IPHONE
  117. //iPhone Device
  118. #endif
  119.  
  120. #if TARGET_IPHONE_SIMULATOR
  121. //iPhone Simulator
  122. #endif
  123.  
  124. //检查系统版本
  125. #define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
  126. #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
  127. #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
  128. #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
  129. #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
  130.  
  131. //----------------------系统----------------------------
  132.  
  133. //----------------------内存----------------------------
  134.  
  135. //使用ARC和不使用ARC
  136. #if __has_feature(objc_arc)
  137. //compiling with ARC
  138. #else
  139. // compiling without ARC
  140. #endif
  141.  
  142. #pragma mark - common functions
  143. #define RELEASE_SAFELY(__POINTER) { [__POINTER release]; __POINTER = nil; }
  144.  
  145. //释放一个对象
  146. #define SAFE_DELETE(P) if(P) { [P release], P = nil; }
  147.  
  148. #define SAFE_RELEASE(x) [x release];x=nil
  149.  
  150. //----------------------内存----------------------------
  151.  
  152. //----------------------图片----------------------------
  153.  
  154. //读取本地图片
  155. #define LOADIMAGE(file,ext) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:file ofType:ext]]
  156.  
  157. //定义UIImage对象
  158. #define IMAGE(A) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:A ofType:nil]]
  159.  
  160. //定义UIImage对象
  161. #define ImageNamed(_pointer) [UIImage imageNamed:[UIUtil imageName:_pointer]]
  162.  
  163. //建议使用前两种宏定义,性能高于后者
  164. //----------------------图片----------------------------
  165.  
  166. //----------------------颜色类---------------------------
  167. // rgb颜色转换(16进制->10进制)
  168. #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]
  169.  
  170. //带有RGBA的颜色设置
  171. #define COLOR(R, G, B, A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]
  172.  
  173. // 获取RGB颜色
  174. #define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]
  175. #define RGB(r,g,b) RGBA(r,g,b,1.0f)
  176.  
  177. //背景色
  178. #define BACKGROUND_COLOR [UIColor colorWithRed:242.0/255.0 green:236.0/255.0 blue:231.0/255.0 alpha:1.0]
  179.  
  180. //清除背景色
  181. #define CLEARCOLOR [UIColor clearColor]
  182.  
  183. #pragma mark - color functions
  184. #define RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1]
  185. #define RGBACOLOR(r,g,b,a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)]
  186.  
  187. //----------------------颜色类--------------------------
  188.  
  189. //----------------------其他----------------------------
  190.  
  191. //方正黑体简体字体定义
  192. #define FONT(F) [UIFont fontWithName:@"FZHTJW--GB1-0" size:F]
  193.  
  194. //定义一个API
  195. #define APIURL @"http://xxxxx/"
  196. //登陆API
  197. #define APILogin [APIURL stringByAppendingString:@"Login"]
  198.  
  199. //设置View的tag属性
  200. #define VIEWWITHTAG(_OBJECT, _TAG) [_OBJECT viewWithTag : _TAG]
  201. //程序的本地化,引用国际化的文件
  202. #define MyLocal(x, ...) NSLocalizedString(x, nil)
  203.  
  204. //G-C-D
  205. #define BACK(block) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block)
  206. #define MAIN(block) dispatch_async(dispatch_get_main_queue(),block)
  207.  
  208. //NSUserDefaults 实例化
  209. #define USER_DEFAULT [NSUserDefaults standardUserDefaults]
  210.  
  211. //由角度获取弧度 有弧度获取角度
  212. #define degreesToRadian(x) (M_PI * (x) / 180.0)
  213. #define radianToDegrees(radian) (radian*180.0)/(M_PI)
  214.  
  215. //单例化一个类
  216. #define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \
  217. \
  218. static classname *shared##classname = nil; \
  219. \
  220. + (classname *)shared##classname \
  221. { \
  222. @synchronized(self) \
  223. { \
  224. if (shared##classname == nil) \
  225. { \
  226. shared##classname = [[self alloc] init]; \
  227. } \
  228. } \
  229. \
  230. return shared##classname; \
  231. } \
  232. \
  233. + (id)allocWithZone:(NSZone *)zone \
  234. { \
  235. @synchronized(self) \
  236. { \
  237. if (shared##classname == nil) \
  238. { \
  239. shared##classname = [super allocWithZone:zone]; \
  240. return shared##classname; \
  241. } \
  242. } \
  243. \
  244. return nil; \
  245. } \
  246. \
  247. - (id)copyWithZone:(NSZone *)zone \
  248. { \
  249. return self; \
  250. }

常用宏OC的更多相关文章

  1. iOS常用宏定义大全

    宏定义与常量的区别 宏:只是在预处理器里进行文本替换,不做任何类型检查,宏能定义代码,const不能,多个宏编译时间相对较长,影响开发效率,调试过慢,const只会编译一次,缩短编译时间. 所以在使用 ...

  2. iOS常用宏 定义

    总结了iOS开发过程中的一些常用宏,以后会陆陆续续添加进来. 字符串是否为空 1   #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull c ...

  3. android的 makefile里 的常用 宏定义

    在Android编译框架中,把许多固定的.反复用到的目录路径定义为 宏变量,常用 宏 如下: out/target/product/xxx的宏即为:PRODUCT_OUT out/target/pro ...

  4. iOS 开发常用宏

    来源:iOS_小松哥 链接:http://www.jianshu.com/p/be00c3f3cafd 大家都是知道使用宏不仅方便,而且可以提高开发效率.下面总结了iOS开发过程中的一些常用宏,会持续 ...

  5. ios 常用宏(copy)

    分享一下我现在用的 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3 ...

  6. 程序员需要有多懒 ?- cocos2d-x 数学函数、常用宏粗整理 - by Glede

    最近我们的cocos2d-x游戏项目已经进入了正式开发的阶段了,几个dev都辛苦码代码.cocos2d-x还是一套比较方便的api的,什么action啊.director啊.ccpoint啊都蛮便捷的 ...

  7. 程序员需要有多懒 ?- cocos2d-x 数学函数、常用宏粗整理

    原帖地址:http://www.cnblogs.com/buaashine/archive/2012/11/12/2765691.html 1.注意这是cocos2d-x中的函数,但大体上和cocos ...

  8. 开发常用宏 - iOS

    以下是一些开发中会经常用到的宏,简单的进行了整理,为了今后可以更加方便的使用,从而提升开发的效率,不为此搭进去更多时间. 也希望有大家可以补充,从而使其更加强加! /** * 开发常用宏相关 */ # ...

  9. CTEX - 在线文档 - TeX/LaTeX 常用宏包

    CTEX - 在线文档 - TeX/LaTeX 常用宏包       页面与章节标题式样   浮动对象及标题设计   生成与插入图形   表格与列表   目录与索引   参考文献   数学与化学公式 ...

随机推荐

  1. Asp.Net 之 Web.config 配置文件详解 -转

    在asp.net中配置文件名一般默认是web.config.每个web.config文件都是基于XML的文本文件,并且可以保存到Web应用程序中的任何目录中.在发布Web应用程序时web.config ...

  2. ASP.NET MVC实现layui富文本编辑器应用

    先看看视图层 在视图层,使用的是视图助手--HtmlHelper,代替我们网页中传统的表单标签元素,其中的m代表实体模型.通过视图助手,为我们生成id和name属性相同的textarea标签. 备注: ...

  3. Unix Tutorial Eight

    1.UNIX 变量 变量是在运行时将信息从shell传递到程序的一种方式.程序在特定的变量中查找“在环境中”,如果发现它们将使用存储的值.有些是由系统设置的,另一些是由你设置的,还有一些是由shell ...

  4. bzoj 3123: [Sdoi2013]森林(45分暴力)

    3123: [Sdoi2013]森林 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 4184  Solved: 1235[Submit][Status ...

  5. MVVM与Controller瘦身实践

    MVC是一个做iOS开发都知道的设计模式,也是Apple官方推荐的设计模式.实际上,Cocoa Touch就是按照MVC来设计的. 这里,我们先不讲MVC是什么,我们先来谈谈软件设计的一些原则或者说理 ...

  6. generator-yield到底是个啥

    咱们通过上篇文章的简单介绍,已经了解到yield是放弃执行,放弃现在继续执行的权利,把权利让给别人,什么时候想继续执行的时候,再调一次就好.接下来咱们说两件事,就是yield是一个很有意思的东西,它可 ...

  7. php使用百度地图API

    首先注册百度开发者平台账号,创建应用获取AK 不同的应用功能不同,一定要注意,没有的功能调用会提示APP被禁用 根据开发文档使用 给出例子:百度地图WEB api http://lbsyun.baid ...

  8. POJ1028 Web Navigation

    题目来源:http://poj.org/problem?id=1028 题目大意: 模拟实现一个浏览器的“前进”和“回退”功能.由一个forward stack和一个backward stack实现. ...

  9. Python爬取天气预报

    实现爬取一天的天气预报 非常简单的一个小爬虫,利用的也是基本的request.BeautifulSoup.re库,算是简单的上手一个小测试吧 from urllib.request import ur ...

  10. windows srver 显示桌面图标。

    rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0