iOS单例两种创建方式

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;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在开发中经常会用到单例设计模式,目的就是为了在程序的整个生命周期内,只会创建一个类的实例对象,而且只要程序不被杀死...
    零度_不结冰阅读 447评论 0 0
  • 原文地址 http://www.cocoachina.com/ios/20160907/17497.html 在开...
    Amok校长阅读 511评论 0 0
  • //gcd创建单例: staticid_instance; +(instancetype)allocWithZon...
    某某徐某某阅读 283评论 0 0
  • 一.单列模式简介 1.什么是单列模式? a.通过static关键词,声明全局变量。在整个进程运行期间只会被赋值一次...
    笃Boy阅读 416评论 0 0
  • 在开发中经常会用到单例设计模式,目的就是为了在程序的整个生命周期内,只会创建一个类的实例对象,而且只要程序不被杀死...
    VincentHK阅读 685评论 0 3