zoukankan      html  css  js  c++  java
  • IOS常用宏定义

    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    #ifndef MacroDefinition_h
    #define MacroDefinition_h
     
    //-------------------获取设备大小-------------------------
    //NavBar高度
    #define NavigationBar_HEIGHT 44
     
    //获取屏幕 宽度、高度
    #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)
    #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)
     
    //-------------------获取设备大小-------------------------
     
     
    //-------------------打印日志-------------------------
    //DEBUG  模式下打印日志,当前行
    #ifdef DEBUG
    #   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
    #else
    #   define DLog(...)
    #endif
     
     
    //重写NSLog,Debug模式下打印日志和当前行数
    #if DEBUG
    #define NSLog(FORMAT, ...) fprintf(stderr," function:%s line:%d content:%s ", __FUNCTION__, __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
    #else
    #define NSLog(FORMAT, ...) nil
    #endif
     
    //DEBUG  模式下打印日志,当前行 并弹出一个警告
    #ifdef DEBUG
    #   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]; }
    #else
    #   define ULog(...)
    #endif
     
     
    #define ITTDEBUG
    #define ITTLOGLEVEL_INFO     10
    #define ITTLOGLEVEL_WARNING  3
    #define ITTLOGLEVEL_ERROR    1
     
    #ifndef ITTMAXLOGLEVEL
     
    #ifdef DEBUG
    #define ITTMAXLOGLEVEL ITTLOGLEVEL_INFO
    #else
    #define ITTMAXLOGLEVEL ITTLOGLEVEL_ERROR
    #endif
     
    #endif
     
    // The general purpose logger. This ignores logging levels.
    #ifdef ITTDEBUG
    #define ITTDPRINT(xx, ...)  NSLog(@"%s(%d): " xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
    #else
    #define ITTDPRINT(xx, ...)  ((void)0)
    #endif
     
    //打印当前方法的名称
    #define ITTDPRINTMETHODNAME() ITTDPRINT(@"%s", __PRETTY_FUNCTION__)
     
    // Log-level based logging macros.
    #if ITTLOGLEVEL_ERROR <= ITTMAXLOGLEVEL
    #define ITTDERROR(xx, ...)  ITTDPRINT(xx, ##__VA_ARGS__)
    #else
    #define ITTDERROR(xx, ...)  ((void)0)
    #endif
     
    #if ITTLOGLEVEL_WARNING <= ITTMAXLOGLEVEL
    #define ITTDWARNING(xx, ...)  ITTDPRINT(xx, ##__VA_ARGS__)
    #else
    #define ITTDWARNING(xx, ...)  ((void)0)
    #endif
     
    #if ITTLOGLEVEL_INFO <= ITTMAXLOGLEVEL
    #define ITTDINFO(xx, ...)  ITTDPRINT(xx, ##__VA_ARGS__)
    #else
    #define ITTDINFO(xx, ...)  ((void)0)
    #endif
     
    #ifdef ITTDEBUG
    #define ITTDCONDITIONLOG(condition, xx, ...) { if ((condition)) {
    ITTDPRINT(xx, ##__VA_ARGS__);
    }
    } ((void)0)
    #else
    #define ITTDCONDITIONLOG(condition, xx, ...) ((void)0)
    #endif
     
    #define ITTAssert(condition, ...)                                      
    do {                                                                     
    if (!(condition)) {                                                    
    [[NSAssertionHandler currentHandler]                                 
    handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__]
    file:[NSString stringWithUTF8String:__FILE__] 
    lineNumber:__LINE__                                 
    description:__VA_ARGS__];                            
    }                                                                      
    } while(0)
     
    //---------------------打印日志--------------------------
     
     
    //----------------------系统----------------------------
     
    // 是否iPad
    #define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    // 是否iPad
    #define someThing (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)? ipad: iphone
     
    //获取系统版本
    #define IOS_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]
    #define CurrentSystemVersion [[UIDevice currentDevice] systemVersion]
     
    //获取当前语言
    #define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])
     
    //判断是否 Retina屏、设备是否%fhone 5、是否是iPad
    #define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)
    #define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
    #define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
     
    //判断设备的操做系统是不是ios7
    #define IOS7 ([[[UIDevice currentDevice].systemVersion doubleValue] >= 7.0]
     
    //判断当前设备是不是iphone5
    #define kScreenIphone5    (([[UIScreen mainScreen] bounds].size.height)>=568)
     
    //获取当前屏幕的高度
    #define kMainScreenHeight ([UIScreen mainScreen].applicationFrame.size.height)
     
    //获取当前屏幕的宽度
    #define kMainScreenWidth  ([UIScreen mainScreen].applicationFrame.size.width)
     
     
     
    //定义一个define函数
    #define TT_RELEASE_CF_SAFELY(__REF) { if (nil != (__REF)) { CFRelease(__REF); __REF = nil; } }
     
    //判断是真机还是模拟器
    #if TARGET_OS_IPHONE
    //iPhone Device
    #endif
     
    #if TARGET_IPHONE_SIMULATOR
    //iPhone Simulator
    #endif
     
    //检查系统版本
    #define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
    #define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
    #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
    #define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
    #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
     
     
    //----------------------系统----------------------------
     
     
    //----------------------内存----------------------------
     
    //使用ARC和不使用ARC
    #if __has_feature(objc_arc)
    //compiling with ARC
    #else
    // compiling without ARC
    #endif
     
    #pragma mark - common functions
    #define RELEASE_SAFELY(__POINTER) { [__POINTER release]; __POINTER = nil; }
     
    //释放一个对象
    #define SAFE_DELETE(P) if(P) { [P release], P = nil; }
     
    #define SAFE_RELEASE(x) [x release];x=nil
     
     
     
    //----------------------内存----------------------------
     
     
    //----------------------图片----------------------------
     
    //读取本地图片
    #define LOADIMAGE(file,ext) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:file ofType:ext]]
     
    //定义UIImage对象
    #define IMAGE(A) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:A ofType:nil]]
     
    //定义UIImage对象
    #define ImageNamed(_pointer) [UIImage imageNamed:[UIUtil imageName:_pointer]]
     
    //建议使用前两种宏定义,性能高于后者
    //----------------------图片----------------------------
     
     
     
    //----------------------颜色类---------------------------
    // rgb颜色转换(16进制->10进制)
    #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]
     
    //带有RGBA的颜色设置
    #define COLOR(R, G, B, A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]
     
    // 获取RGB颜色
    #define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]
    #define RGB(r,g,b) RGBA(r,g,b,1.0f)
     
    //背景色
    #define BACKGROUND_COLOR [UIColor colorWithRed:242.0/255.0 green:236.0/255.0 blue:231.0/255.0 alpha:1.0]
     
    //清除背景色
    #define CLEARCOLOR [UIColor clearColor]
     
    #pragma mark - color functions
    #define RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1]
    #define RGBACOLOR(r,g,b,a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)]
     
    //----------------------颜色类--------------------------
     
     
     
    //----------------------其他----------------------------
     
    //方正黑体简体字体定义
    #define FONT(F) [UIFont fontWithName:@"FZHTJW--GB1-0" size:F]
     
     
    //定义一个API
    #define APIURL                @"http://xxxxx/"
    //登录API
    #define APILogin              [APIURL stringByAppendingString:@"Login"]
     
    //设置View的tag属性
    #define VIEWWITHTAG(_OBJECT, _TAG)    [_OBJECT viewWithTag : _TAG]
    //程序的本地化,引用国际化的文件
    #define MyLocal(x, ...) NSLocalizedString(x, nil)
     
    //G-C-D
    #define BACK(block) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block)
    #define MAIN(block) dispatch_async(dispatch_get_main_queue(),block)
     
    //NSUserDefaults 实例化
    #define USER_DEFAULT [NSUserDefaults standardUserDefaults]
     
     
    //由角度获取弧度 有弧度获取角度
    #define degreesToRadian(x) (M_PI * (x) / 180.0)
    #define radianToDegrees(radian) (radian*180.0)/(M_PI)
     
     
     
    //单例化一个类
    #define SYNTHESIZE_SINGLETON_FOR_CLASS(classname)
    static classname *shared##classname = nil;
    + (classname *)shared##classname
    {
    @synchronized(self)
    {
    if (shared##classname == nil)
    {
    shared##classname = [[self alloc] init];
    }
    }
    return shared##classname;
    }
    + (id)allocWithZone:(NSZone *)zone
    {
    @synchronized(self)
    {
    if (shared##classname == nil)
    {
    shared##classname = [super allocWithZone:zone];
    return shared##classname;
    }
    }
    return nil;
    }
    - (id)copyWithZone:(NSZone *)zone
    {
    return self;
    }
     
     
     
    #endif
  • 相关阅读:
    反思二
    安装Electron时卡在install.js不动的解决方案
    解决npm 下载速度慢的问题
    覆盖第三方jar包中的某一个类。妙!!
    关于拦截器是用注解方便,还是用配置文件写死方便的总结。
    yapi 启动后,老是自动关闭的问题。
    BaseResponse公共响应类,与我的设计一模一样,靠、ApiResponse
    HashMap 的 7 种遍历方式与性能分析!(强烈推荐)、forEach
    Jackson objectMapper.readValue 方法 详解
    yapi tag的问题,暂时只保留一个tag
  • 原文地址:https://www.cnblogs.com/-ios/p/4669944.html
Copyright © 2011-2022 走看看