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. LightOJ 1047-Program C

    Description The people of Mohammadpur have decided to paint each of their houses red, green, or blue ...

  2. Embedded binary is not signed with the same certificate as the parent app

    I face the same issue too,I solve it by this: First, I reCreate my team develop certificate(Because ...

  3. 0125 多线程 继承Thread 练习

    //定义一个继承Thread类的类,并覆盖run()方法,在run()方法中每隔100毫秒打印一句话public class Csh extends Thread{ public void run() ...

  4. JVM值内存垃圾回收监控之jstat

    如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为top主要监控的是总体的系统资源,很难定位到java应用程序. Jstat是JDK自带的一个轻量级小工具.全称“Java ...

  5. 解决mac eclipse 异常退出后无法打开处于loading状态

    <workspace>\.metadata\.plugins\org.eclipse.core.resources目录,删除文件 .snap

  6. method chaining

    经常写Java的话,可能比较熟悉下面这种函数调用方式 object.method1().method2() 术语叫所谓的method chaining,在c++里面,为了支持这种调用格式,你必须保障函 ...

  7. 如何调用super

    因此,决定是否调用 super,基于您打算如何重新实施方法: 如果打算补充超类实现的行为,请调用 super. 如果打算替换超类实现的行为,就不要调用 super. 如果您要补充超类行为,另一个需要重 ...

  8. JQuery源码分析(二)

    立即调用表达式: 任何库与框架设计的第一个要点就是解决命名空间与变量污染的问题.jQuery就是利用了JavaScript函数作用域的特性,采用立即调用表达式包裹了自身的方法来解决这个问题. jQue ...

  9. 用云存储和CDN轻松搞定网站图片

    http://www.kuqin.com/web/20120207/317912.html

  10. Unity3D ShaderLab 使用BlinnPhong高光类型

    Unity3D shaderLab 使用BlinnPhong高光类型 上一篇我们实现了自定义高光类型,这一篇,我们说Blinn高光,它是另一种计算和估算高光更高效的方式,它是通过视线防线和光线方向,所 ...