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

     

    //获取屏幕 宽度、高度
    #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)
    #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)
    
    // 根据版本号导入文件
    #ifdef NSFoundationVersionNumber_iOS_9_x_Max #import <UserNotifications/UserNotifications.h> #endif

      

    /**
     *  版本号
     *
     *  @param  CFBundleShortVersionString
     *
     *  @return kVersion
     */
    #define kVersion [NSString stringWithFormat:@"%@",[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]]
    

     

    /**
     *  iPhone or iPad
     */
    #define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    #define IS_PAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    

      

    #define IPHONE4S ((SCREEN.height == 480.0f)?YES:NO)
    #define IPHONE5 ((SCREEN.height == 568.0f)?YES:NO)
    #define IPHONE6 ((SCREEN.height == 667.0f)?YES:NO)
    #define IPHONE6P ((SCREEN.height == 736.0f)?YES:NO)
    
    // 操作系统宏
    #define IOS10_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0)
    #define IOS9_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0)
    #define IOS8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
    #define IOS7_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
    
    // 线程开启宏
    #define dispatch_main_async_withsafe(block)
    if ([NSThread isMainThread]) {
    block();
    } else {
    dispatch_async(dispatch_get_main_queue(), block);
    }
    
    #define dispatch_global_async_withsafe(block)
    if ([NSThread isMainThread]) {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),block);
    } else {
    block();
    }

    单粒模式宏定义

    #pragma mark - 实例定义
    #define SingletenInterface 
    + (instancetype)sharedInstance;
    
    
    #pragma mark - 定义单例代码块
    #define SingletenImpl 
    static id _instace; 
    
    + (id)allocWithZone:(struct _NSZone *)zone 
    { 
        static dispatch_once_t onceToken; 
        dispatch_once(&onceToken, ^{ 
            _instace = [super allocWithZone:zone]; 
        }); 
        return _instace; 
    } 
    
    - (id)copyWithZone:(NSZone *)zone 
    { 
        return _instace; 
    } 
    
    + (instancetype)sharedInstance 
    { 
        static dispatch_once_t onceToken; 
        dispatch_once(&onceToken, ^{ 
            _instace = [[self alloc] init]; 
        }); 
        return _instace; 
    } 
    

     宏中使用##,传入参数作为shared方法名称:

    //
    //  Singleten.h
    //  可变参数测试
    //
    //  Created by HJiang on 2017/9/1.
    //  Copyright © 2017年 HJiang. All rights reserved.
    //
    
    #ifndef Singleten_h
    #define Singleten_h
    
    #pragma mark - 实例定义
    #define SingletenInterface(name) 
    + (instancetype)shared##name;
    
    
    #pragma mark - 定义单例代码块
    #define SingletenImpl(name) 
    static id _instace; 
    
    + (id)allocWithZone:(struct _NSZone *)zone 
    { 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
    _instace = [super allocWithZone:zone]; 
    }); 
    return _instace; 
    } 
    
    - (id)copyWithZone:(NSZone *)zone 
    { 
    return _instace; 
    } 
    
    + (instancetype)shared##name 
    { 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
    _instace = [[self alloc] init]; 
    }); 
    return _instace; 
    } 
    
    
    
    #endif /* Singleten_h */
    

    定义开发模式和发布模式条件宏

    #ifdef DEBUG
    #define CCDebugLog(fmt,...) 
    if ([[NSThread currentThread] isMainThread]) {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSString *newFrt = [@"[文件名:%s]
     [函数名:%s]
     [行号:%d]
    " stringByAppendingString:fmt ];
    NSString *logContent = [NSString stringWithFormat:newFrt,__FILE__, __FUNCTION__, __LINE__,##__VA_ARGS__];
    logContent = [NSString stringWithFormat:@"%@%@%@",@"#####",logContent,@"#####"];
    NSLog(@"%@",logContent);
    });
    }else{
    NSString *newFrt = [@"[文件名:%s]
     [函数名:%s]
     [行号:%d]
    " stringByAppendingString:fmt ];
    NSString *logContent = [NSString stringWithFormat:newFrt,__FILE__, __FUNCTION__, __LINE__,##__VA_ARGS__];
    logContent = [NSString stringWithFormat:@"%@%@%@",@"#####",logContent,@"#####"];
    NSLog(@"%@",logContent);
    }
    
    #else
    #define CCDebugLog(fmt,...)
    # endif
    

    替换系统NSLog

    #ifdef DEBUG
    #define NSLog(format, ...) printf("
    [%s] %s [第%d行] %s
    ", __TIME__, __FUNCTION__, __LINE__, [[NSString stringWithFormat:format, ## __VA_ARGS__] UTF8String]);
    #else
    #define NSLog(format, ...)
    #endif
    
  • 相关阅读:
    JavaScript的正则表达式的基础
    运用JS判断代码可以参考学习
    调用百度地图代码
    运用了css,js
    中国地图(Highmaps)
    Centos
    代理模式【 动态代理与静态代理】
    java集合 collection-list-LinkedList 模拟一个堆栈或者队列数据结构。
    java集合 collection-list-LinkedList
    java集合 collection-list-vector
  • 原文地址:https://www.cnblogs.com/HJiang/p/7462230.html
Copyright © 2011-2022 走看看