• OC 单例实现


    2. 在.h 文件遵循 <NSCopying,NSMutabalecopying>

     

    3.定义宏,实现任意类型单单例

    #define SingleH(name) +(instancetype)share##name;
    
    #if __has_feature(objc_arc)
    //条件满足 ARC
    #define SingleM(name) static id _instance;
    +(instancetype)allocWithZone:(struct _NSZone *)zone
    {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    _instance = [super allocWithZone:zone];
    });
    
    return _instance;
    }
    
    +(instancetype)share##name
    {
    return [[self alloc]init];
    }
    
    -(id)copyWithZone:(NSZone *)zone
    {
    return _instance;
    }
    
    -(id)mutableCopyWithZone:(NSZone *)zone
    {
    return _instance;
    }
    
    #else
    //MRC
    #define SingleM(name) static id _instance;
    +(instancetype)allocWithZone:(struct _NSZone *)zone
    {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    _instance = [super allocWithZone:zone];
    });
    
    return _instance;
    }
    
    +(instancetype)share##name
    {
    return [[self alloc]init];
    }
    
    -(id)copyWithZone:(NSZone *)zone
    {
    return _instance;
    }
    
    -(id)mutableCopyWithZone:(NSZone *)zone
    {
    return _instance;
    }
    -(oneway void)release
    {
    }
    
    -(instancetype)retain
    {
        return _instance;
    }
    
    -(NSUInteger)retainCount
    {
        return MAXFLOAT;
    }
    #endif
    

      
    4.使用 括号里的名字 自己定义,但是h和m文件要一样

    在 .h文件

     在.m文件

  • 相关阅读:
    POJ题目分类
    最短路&记录记录记录路径
    博弈论
    生成树模板总结
    弱鸡的暑假图论安排
    面试随缘做题--day2
    面试随缘做题---day1
    PAT第四章速刷
    PAT第二章知识点快速复习
    sql语句快速复习
  • 原文地址:https://www.cnblogs.com/qingzZ/p/9258902.html
Copyright © 2020-2023  润新知