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. 关于SharePoint REST中的授权的研究

    博客地址:http://blog.csdn.net/FoxDave 当我们开发SharePoint APP需要调用REST服务时,可以使用OAuth完成授权,也可以使用跨域库.以下是微软专家的一段注解 ...

  2. Python单元测试——unittest

    unittest是python自带的一个模块 python344\Lib\unittest 官方参考文档: http://docs.python.org/2.7/library/unittest.ht ...

  3. 转:Java面试题集(1-50)

    Java程序员面试题集(1-50) http://blog.csdn.net/jackfrued/article/details/17403101 一.Java基础部分 1.面向对象的特征有哪些方面? ...

  4. SQLSERVER数据库中批量导入数据的几种方法

    第一:使用Select Into 语句 如果企业数据库都是采用SQL Server数据库的话,则可以利用select into语句实现数据的导入. select into语句的作用是把数据从另外一个数 ...

  5. color 的一些处理

    1.UIImage转换成UIcolor cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@" ...

  6. META标签的NAME变量

    META标签的NAME变量语法格式是: <META NAME=xxx CONTENT=xxxxxxxxxxxxxxxxxx> 其中xxx主要有下面几种参数: 1. Keywords(关键字 ...

  7. Sql Server REPLACE函数的使用;SQL中 patindex函数的用法

    Sql Server REPLACE函数的使用 REPLACE用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式. 语法REPLACE ( ''string_replace1'' ...

  8. 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)

    ---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...

  9. python3爬虫再探之EXCEL

    在爬取数据之后,数据的保存就成为一个新的问题,一般不太大的的数据存储到EXCEL就可以了.这里介绍一个python的第三方库——xlsxwriter. 这个库的安装就不介绍了,pip就可以,不用FQ. ...

  10. [Java Basics] Stack, Heap, Constructor, I/O, Immutable, ClassLoader

    Good about Java: friendly syntax, memory management[GC can collect unreferenced memory resources], o ...