zoukankan      html  css  js  c++  java
  • iOS 开发常用宏

    iOS开发过程中使用一些常用的宏可以提高开发效率,提高代码的重用性;将这些宏放到一个头文件里然后再放到工程中的-Prefix.pch文件中(或者直接放到-Prefix.pch中)直接可以使用,灰常方便。

    本文整理自http://www.cocoachina.com/applenews/devnews/2013/0328/5907.html 。

    做了一些分类和注释,可以根据自己习惯再添加或者删除或者修改这些宏进行使用。

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