美文网首页
iOS单例模式

iOS单例模式

作者: 王zuozuo | 来源:发表于2017-03-29 19:53 被阅读8次
    @implementation ClassName    
    //第1步: 存储唯一实例 
    static ClassName *_instance;
    //第2步: 分配内存空间时都会调用这个方法. 保证分配内存alloc时都相同.
    +(id)allocWithZone:(struct _NSZone *)zone  {     
    //调用dispatch_once保证在多线程中也只被实例化一次      
        static dispatch_once_t onceToken;      
        dispatch_once(&onceToken, ^{        
            _instance = [super allocWithZone:zone];     
        });    
     return _instance;
     }    
    //第3步: 保证init初始化时都相同    
    +(instancetype)sharedInstance  {
            static dispatch_once_t onceToken;
            dispatch_once(&onceToken, ^{
                _instance = [[ClassName alloc] init];     
            });        
            return _instance;   
     } 
    
    //第4步: 保证copy时都相同
     -(id)copyWithZone:(NSZone *)zone{
            return _instance;    
    } 
    @end
    

    相关文章

      网友评论

          本文标题:iOS单例模式

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