使用alloc方法初始化一个类的实例的时候,默认是调用了 allocWithZone 的方法。

重写allocWithZone方法\

//重写allocWithZone:方法,在这里创建唯一的实例(注意线程安全)

static id _instance;

+(instancetype)alloc

{

return [super allocWithZone:nil];

}

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

{

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

_instance = [super allocWithZone:zone];

});

return _instance;

}

//提供1个类方法让外界访问唯一的实例

+ (instancetype)sharedInstance

{

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

_instance = [[self alloc] init];

});

return _instance;

}

//实现copyWithZone:方法

- (id)copyWithZone:(struct _NSZone *)zone

{

return _instance;

}

转载于:https://www.cnblogs.com/whey/p/11209129.html

ARC单例模式的实现相关推荐

  1. 为什么Apple建议使用dispatch_once在ARC下实现单例模式?

    本文翻译自:Why does Apple recommend to use dispatch_once for implementing the singleton pattern under ARC ...

  2. ARC和MRC 兼容的单例模式

    一.ARC下的单例实现 说明:在用户实例化的方法控制单次执行,同时开放单例的初始化方法. -(instancetype)init{self=[super init];if(self){static d ...

  3. IOS之Objective-C学习 ARC下的单例模式

    单例模式是我常用的一种设计模式,最常见的用途就是用来保存数据并且传递数据.这都归功于单例模式的特性,首先就让我为大家简单介绍一下单例模式的特性. 单例模式的三大特性: 1.某个类只能有一个实例: 2. ...

  4. ios5 ARC机制介绍和使用

    参考http://www.yifeiyang.net/development-of-the-iphone-simply-1/ http://blog.csdn.net/diyagoanyhacker/ ...

  5. iOS开发-单例模式

    单例模式是一种非常常见的设计模式,之前文章中UIApplication就是一种典型的单例模式,单例理解起来叶很简单,就不是不管如果访问始终只有一个实例化对象,定义全局共享的变量,如果对象是空则初始化一 ...

  6. iOS设计模式(02):单例模式

    分享到:QQ空间新浪微博腾讯微博微信 单例模式是一个类在系统中只有一个实例对象.通过全局的一个入口点对这个实例对象进行访问.在iOS开发中,单例模式是非常有用的一种设计模式.如下图,是一个简单的例模式 ...

  7. iOS设计模式 ——单例模式详解以及严格单例模式注意点

    一.我们常用的单例有哪些? [[UIApplication sharedApplication] statusBarStyle];//系统中的单例模式,通过它获取到状态栏的style [NSNotif ...

  8. OC的单例模式的实现

    以下是在ARC,GCD下的单例模式实现: 头文件中申明类方法getInstance: #import <Foundation/Foundation.h>@interface SingleT ...

  9. IOS单例模式及单例模式的优缺点

    单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. #import <Foundation/Foundation.h&g ...

最新文章

  1. 生成N个不相等的随机数
  2. 简单解析C++基于Boost库实现命令行
  3. 计算机408试题2014,2014年考研计算机统考408真题
  4. 【转】最小编辑距离 算法原理
  5. unzip 解压_每天一条Linux命令(11) unzip (超详细)
  6. java 后台 小程序微信支付
  7. linux如何安装yum
  8. 这是你了解的P2P 么?
  9. 两种方法去除页眉页脚:基于OCR识别后的文本/基于图片切割
  10. php读取路由器arp表,详解ARP地址解析协议的工作流程
  11. 打砖块JAVA_运用java开发打砖块游戏
  12. python程序实例下载_Python经典实例
  13. 生物信息学算法之Python实现|Rosalind刷题笔记:003 中心法则:翻译
  14. 问题2:路径级别不清楚
  15. BJDCTF 2nd 刷题记录
  16. java图形化编程软件,看完跪了
  17. 用JAVA正则表达式轻松替换JSON中大字段
  18. 2021全国职业技能大赛-网络安全赛题解析总结①(超详细)
  19. ROS::差速运动模型机器人运动控制
  20. 【zz】Java 八荣八耻

热门文章

  1. java调用onnx模型_开源一年多的模型交换格式ONNX,已经一统框架江湖了?
  2. 检测到目标主机可能存在缓慢的http拒绝服务攻击_高防服务器能防住哪些攻击?“流量清洗”与它有什么关系?...
  3. jmeter 登录用户并发压力测试案例_测试模型构建及场景用例设计
  4. 男27,想转行互联网,是学习软件测试好,还是前端编程?
  5. 如何学习前端知识?优秀的前端开发工程师应该具备什么条件?
  6. cocos2d pod_cocos2d 和 cocos3d的版本问题
  7. php 实现二叉树的最大深度_python实现二叉树的遍历以及其他基本操作
  8. ue4移动到一定距离_UE4移动组件详解(一)——移动框架与实现原理
  9. html 居中 center,html – 如何居中的元素 – 使用什么而不是align:center属性?
  10. leetcode 题解 java_leetcode-java题解(每天更新)