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

iOS开发中那些高效常用的宏的更多相关文章

  1. iOS开发中对于一些常用的相对路径(持续更新)

    1.iOS开发的证书的描述文件放置地点  ~/Library/MobileDevice/Provisioning Profiles 2.$(SRCROOT)代表的是这个项目文件夹所在的位置  $(PR ...

  2. iOS开发中两个不错的宏定义

    /** Synthsize a weak or strong reference. Example: @weakify(self) [self doSomething^{ @strongify(sel ...

  3. ios开发中字符串的常用功能总结

    1.分割字符串 NSString * str1 = @"123/456"; NSArray * arr1 = [str1 componentsSeparatedByString:@ ...

  4. iOS开发中常用的数学函数

    iOS开发中常用的数学函数 /*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(,)); //result 9 NSLog(,)); //result 27 //开平方 ...

  5. iOS开发中调试小技巧

    对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的 ...

  6. iOS开发中你是否遇到这些经验问题

    前言 小伙伴们在开发中难免会遇到问题, 你是如何解决问题的?不妨也分享给大家!如果此文章其中的任何一条问题对大家有帮助,那么它的存在是有意义的! 反正不管怎样遇到问题就要去解决问题, 在解决问题的同时 ...

  7. 深入理解 iOS 开发中的锁

    来源:伯乐在线 - 夏天然后 链接:http://ios.jobbole.com/89474/ 点击 → 申请加入伯乐在线专栏作者 摘要 本文的目的不是介绍 iOS 中各种锁如何使用,一方面笔者没有大 ...

  8. iOS开发中的MVC设计模式

    我们今天谈谈cocoa程序设计中的 模型-视图-控制器(MVC)范型.我们将从两大方面来讨论MVC: 什么是MVC? M.V.C之间的交流方式是什么样子的? 理解了MVC的概念,对cocoa程序开发是 ...

  9. iOS - 开发中调试小技巧

    对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的 ...

随机推荐

  1. AngularJS结构简介

    AngularJS是MVC架构,M是C里面的属性-值,C是js的class,V是DOM 各个关键特性的结构如下图所示: http://my.oschina.net/tommyfok/blog/2970 ...

  2. ajax跨域相关

    ajax 技术使用xmlhttprequest组件附送请求时,发送请求的url和本网页的url地址必须在同一个域名下如果需要跨域,可以使用iframe或者<javascript src=&quo ...

  3. mybatis ForEach Collection集合等规范解析(转)

    转自:http://blog.csdn.net/wj3319/article/details/9025349 在SQL开发过程中,动态构建In集合条件查询是比较常见的用法,在Mybatis中提供了fo ...

  4. 《同一个类中不同方法之间的调用相关问题(省略的类名或者this)》

    //同一个类中不同方法之间的调用相关问题(省略的类名或者this) class A { public void B() { System.out.println("b方法运行"); ...

  5. 《JAVA学习笔记 (final关键字)》

    [14-9]面向对象-final关键字 /* 继承的弊端,打破封装性. 不让其他类继承该类,就不会有重写. 怎么能实现呢?通过Java中的一个关键子来实现,final(最终化). [final关键字] ...

  6. 玩转渗透神器Kali:Kali Linux作为主系统使用的正确姿势TIPS

    Kali Linux 前身是著名渗透测试系统BackTrack ,是一个基于 Debian 的 Linux 发行版,包含很多安全和取证方面的相关工具. 本文假设你在新装好的kali linux环境下… ...

  7. 一道面试题:按照其描述要求用java语言实现快速排序

    回来想了想,写出了如下的程序: /** * 一道面试题,按照其描述要求进行快速排序(英文的,希望理解是对的..) * 要求:和一般的快速排序算法不同的是,它不是依次交换pivot和左右元素节点(交换2 ...

  8. Drools规则文件结构说明

    一.规则文件构成 package(规则文件所在包) import(导入java包) global(规则文件中的"全局变量") function(函数) query(查找) rule ...

  9. php 安装composer

    右击我的电脑 再属性 再高级 再环境变量 再系统变量里有个path 双击打开来 把你的PHP路径 加个分号再前面 添加进去就OK了 1.http://www.th7.cn/Program/php/20 ...

  10. 瓷砖铺放 (状压DP+矩阵快速幂)

    由于方块最多涉及3行,于是考虑将每两行状压起来,dfs搜索每种状态之间的转移. 这样一共有2^12种状态,显然进行矩阵快速幂优化时会超时,便考虑减少状态. 进行两遍bfs,分别为初始状态可以到达的状态 ...