美文网首页iOS
IOS :两种单例的创建

IOS :两种单例的创建

作者: 某某徐某某 | 来源:发表于2016-12-06 09:54 被阅读0次

//gcd创建单例:

static id _instance;

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

{

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

_instance = [superallocWithZone:zone];

});

return_instance;

}//保证oncetoken只被执行一次

+ (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;

}

//互斥锁

static id _instance;

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

{

@synchronized(self) {

if(_instance == nil) {

_instance = [superallocWithZone:zone];

}//保证self对象不被其他进程修改 起到线程保护作用 同时括号内的代码块 会被加锁 其他线程访问会休眠 直到代码块执行结束或者抛出异常

}

return_instance;

}

+ (instancetype)sharedInstance

{

@synchronized(self) {

if(_instance == nil) {

_instance = [[self alloc] init];

}

}

return_instance;

}

- (id)copyWithZone:(NSZone *)zone

{

return_instance;

}

相关文章

  • iOS-两种单例模式的实现

    单例模式是开发中最常用的写法之一,创建一个单例很多办法,iOS的单例模式有两种官方写法,如下: 不使用GCD 某些...

  • iOS 单例(singleton,GCD,@synchroniz

    iOS中单例模式的两种创建方法:GCD 和 @synchronize 1.GCD的方法 1.重写allocWith...

  • IOS :两种单例的创建

    //gcd创建单例: staticid_instance; +(instancetype)allocWithZon...

  • iOS 创建单例的方法

    iOS 创建单例的方法 方法一: 方法二:

  • 单例设计模式

    单例设计模式:解决的是一个类只能创建一个对象 iOS的单例模式有两种官方写法,如下: 1)不使用GCD的方式 #i...

  • 单例

    iOS单例模式iOS之单例模式初探iOS单例详解

  • iOS单例两种创建方式

    1、GCD方式创建单例 staticid_instance; +(instancetype)allocWithZo...

  • 单例的2种写法

    单例模式是iOS开发中最常用的设计模式,iOS的单例模式有两种官方写法,如下: 1,常用写法 import "Se...

  • ios -- 创建单例

    + (JYueMyTaskManagerService*)sharedMyTaskService { static...

  • ios创建单例

    最近公司项目其中的一个控制器需要做成单例,以保证收到推送或应用内消息时弹出的是同一个界面,看了下相关资料和视频,现...

网友评论

    本文标题:IOS :两种单例的创建

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