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

    #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)) {                                                    
    [[NSAssertionHandlercurrentHandler]                                 
    handleFailureInFunction:[NSStringstringWithUTF8String:__PRETTY_FUNCTION__]
    file:[NSStringstringWithUTF8String:__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 = [[selfalloc] init];
    }
    }
    return shared##classname;
    }
    + (id)allocWithZone:(NSZone*)zone
    {
    @synchronized(self)
    {
    if (shared##classname == nil)
    {
    shared##classname = [superallocWithZone:zone];
    return shared##classname;
    }
    }
    return nil;
    }
    - (id)copyWithZone:(NSZone*)zone
    {
    return self;
    }
     
     
     
    #endif

     

  • 相关阅读:
    XAML学习笔记之Layout(五)——ViewBox
    XAML学习笔记——Layout(三)
    XAML学习笔记——Layout(二)
    XAML学习笔记——Layout(一)
    从0开始搭建SQL Server 2012 AlwaysOn 第三篇(安装数据,配置AlwaysOn)
    从0开始搭建SQL Server 2012 AlwaysOn 第二篇(配置故障转移集群)
    从0开始搭建SQL Server 2012 AlwaysOn 第一篇(AD域与DNS)
    Sql Server 2012 事务复制遇到的问题及解决方式
    Sql Server 2008R2升级 Sql Server 2012 问题
    第一次ACM
  • 原文地址:https://www.cnblogs.com/guangleijia/p/4757420.html
Copyright © 2011-2022 走看看