美文网首页
iOS单例两种创建方式

iOS单例两种创建方式

作者: 乱尘 | 来源:发表于2017-04-14 14:12 被阅读15次

    1GCD方式创建单例

    static id _instance;

    +(instancetype)allocWithZone:(struct _NSZone *)zone

    {

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken,^{

    _instance =[superallocWithZone: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;

    }

    -(id)mutableCopyWithZone:(NSZone *)zone {

    return_instance;

    }

    2、互斥锁方式

    static id _instance;

    +(instancetype)allocWithZone:(struct _NSZone *)zone

    {

    @synchronized(self){

    if(_instance == nil){

    _instance =[superallocWithZone:zone];

    }

    }

    return_instance;

    }

    +(instancetype)sharedInstance

    {

    @synchronized(self){

    if(_instance == nil){

    _instance =[[self alloc]init];

    }

    }

    return_instance;

    }

    -(id)copyWithZone:(NSZone *)zone

    {

    return_instance;

    }

    相关文章

      网友评论

          本文标题:iOS单例两种创建方式

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