zoukankan      html  css  js  c++  java
  • 利用GCD实现单利模式的宏代码

    以下是.h文件,使用时,直接在需要实现单例模式的类中导入头文件即可。

    // .h文件
    #define DenglSingletonH(name) + (instancetype)shared##name;
    
    // .m文件
    #define DenglSingletonM(name) 
    static id _instance; 
     
    + (instancetype)allocWithZone:(struct _NSZone *)zone 
    { 
        static dispatch_once_t onceToken; 
        dispatch_once(&onceToken, ^{ 
            _instance = [super allocWithZone:zone]; 
        }); 
        return _instance; 
    } 
     
    + (instancetype)shared##name 
    { 
        static dispatch_once_t onceToken; 
        dispatch_once(&onceToken, ^{ 
            _instance = [[self alloc] init]; 
        }); 
        return _instance; 
    } 
     
    - (id)copyWithZone:(NSZone *)zone 
    { 
        return _instance; 
    }

    使用方法:

    1.在.h中导入头文件名称

    2.在.h文件中,DenglSingletonH(ObjectName)

    3.在.m文件中,DenglSingletonM(ObjectName)

  • 相关阅读:
    settTimeout vs setInterval
    JS继承
    JS创建对象
    原型链
    开始学习python的感受
    Problem 29
    Python 查看关键字
    Problem 21
    Problem 34
    Problem 42
  • 原文地址:https://www.cnblogs.com/iOSDeng/p/5454193.html
Copyright © 2011-2022 走看看