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. android 通知栏 notifcation

    http://blog.csdn.net/guolin_blog/article/details/50945228  郭神的博客 final NotificationManager manager = ...

  2. 【温故知新C/C++/opencv】取址符&||cv::groupRectangles||引用与值传递

    cv::groupRectangles void groupRectangles(vector<Rect>& rectList, int groupThreshold, doubl ...

  3. android studio只能全部提示设置

  4. 《用C++语言编写一个程序,求PI的值》

    //编写一个C++程序求PI的值 /* PI=16arctan(1/5)-4arctan(1/239) 其中arctan用如下形式的极数计算: arctan=x-(x^3/3)+(x^5/7)-(x^ ...

  5. <二叉树的基本操作(有层次遍历)>

    #include<stdio.h> #include<stdlib.h> #include<string.h> #define num 100 #define OK ...

  6. Image Generator (Image Builder)

    如果你想要下载一个预编译好的镜像文件,或者想要尝试整个编译过程,一个替代方案是使用镜像生成器(Image Generator)(以前被叫做Image Builder).这是一个预编译好的OpenWrt ...

  7. ecpilise引入Maven项目目录不正常,无JRE,无Maven Dependencies

    原因是我的eclipse默认open perspective是java ee,改成java就恢复正常了.

  8. 程序员是怎么炼成的---OC题集--练习答案与题目(2)

    1.objective-c中有垃圾回收机制吗?  没有像java.C#一样的垃圾回收机制,但是有ARC自动引用计数器技术,根据对象的引用技术来判断对象是否还在使用,如果RC=0,则系统就会销毁对象,实 ...

  9. Android Priority Job Queue (Job Manager):后台线程任务结果传回前台(三)

     Android Priority Job Queue (Job Manager):后台线程任务结果传回前台(三) 在附录文章4,5的基础上改造MainActivity.java和MyJob.ja ...

  10. 如何从oc中去获取一个私有的变量.....

    运行时 的用法 1.定义的一个类,里面有一个私有变量mt_,并且在初始化值为"HaHa Ha ".@interface Mobj : NSObject {@privateNSStr ...