iOS单例模式

作者: charlotte2018 | 来源:发表于2017-03-29 11:19 被阅读12次
    #import <Foundation/Foundation.h>
    
    @interface Instance : NSObject
    
    + (instancetype)sharedInstance;
    
    @end
    
    @implementation Instance
    
    static Instance *instance;
    
    + (instancetype)allocWithZone:(struct _NSZone *)zone
    {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            instance = [super allocWithZone:zone];
        });
        return instance;
    }
    
    + (instancetype)sharedInstance
    {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            instance = [[self alloc] init];
        });
        return instance;
    }
    
    - (id)copyWithZone:(NSZone *)zone
    {
        return instance;
    }
    @end
    
    @implementation Instance
    
    static Instance *instance;
    
    + (instancetype)allocWithZone:(struct _NSZone *)zone
    {
        @synchronized(self) {
            if (instance == nil) {
                instance = [super allocWithZone:zone];
            }
        }
        return instance;
    }
    
    + (instancetype)sharedInstance
    {
        @synchronized(self) {
            if (instance == nil) {
                instance = [[self alloc] init];
            }
        }
        return instance;
    }
    
    - (id)copyWithZone:(NSZone *)zone
    {
        return instance;
    }
    @end
    
    

    相关文章

      网友评论

        本文标题:iOS单例模式

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