美文网首页
单例模式

单例模式

作者: 流行的武 | 来源:发表于2016-04-13 20:47 被阅读20次

    创建一个单例3步

    1.在需要创建单例的类中 #import"HWSingleton.h" ,导入头文件

    2.在.h 文件中 加入代码 HWSingletonM

    3.在.m 文件中 加入代码 HWSingletonH

    --------------- 我是分割线 --------------

    Dog.h

     #import <Foundation/Foundation.h>    
     #import "HWSingleton.h"
     @interface Dog : NSObject
     HWSingletonH
     @end.
    

    Dog.m

    #import "Dog.h"
    @interface Dog ()<NSCopying>
    
    @end
    
    @implementation Dog
    
    HWSingletonM
    
    @end
    

    懵逼了吧, HWSingleton.h里到底是啥?

    其实里面就是两个宏,直接上代码

    HWSingleton.h中的代码

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

    相关文章

      网友评论

          本文标题:单例模式

          本文链接:https://www.haomeiwen.com/subject/vgqglttx.html