iOS单例模式

参考自http://www.cnblogs.com/lyanet/archive/2013/01/11/2856468.html

单例
--①概念:单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类
--②使用情景:iOS中几乎所有的app都只能同时登录一个帐号,而且 对于电商类app 下单时会带着用户ID,这时候单例尤为重要!

创建方法

① 使用线程锁 @synchronized(self) {} 控制某一时间只允许一个线程访问初始化方法
static User *instance
+ (instancetype)shareUser
{ @synchronized(self) { //设置同时只有一个线程可以访问shareUser方法 if (!instance) { instance = [[self alloc] init]; } } return instance; }
---ps:『维尼的小熊』告知我,绝对安全的单例创建方法,
将 allocWithZone copyWithZone 等方法都重写
②使用GCD 初始化线程只执行一次
+ (instancetype) shareUserGCD { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance = [[self alloc] init]; }); return instance; }

测试:

User *xiaoming = [User shareUser]; xiaoming.name = @"xiaoming";//User类有一个一个name属性 User *lily = [User shareUser]; NSLog(@" xiaoming.name = %@",xiaoming.name); NSLog(@" lily.name = %@,lily.name");

输出结果为: xiaoming.name = xiaoming
lily.name = xiaoming,
分析:lily.name并没有赋值,但是lily.name = xiaoming,
由此可见 xiaoming 与lily就是一个对象,单例创建成功
ps:也可以输出一个 xiaoming与lily的内存地址,相等即为单例

`

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

推荐阅读更多精彩内容

  • 单例模式的作用:可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问,从而方便地控制了实例个数,并...
    BEYOND黄阅读 305评论 0 3
  • 简介: 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统...
    RunnerFL阅读 666评论 0 0
  • 单例: --1. 概念:单例模式是确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类,称为单...
    devZhang阅读 371评论 0 0
  • 单例介绍 本文源码下载地址 1.什么是单例 说到单例首先要提到单例模式,因为单例模式是单例存在的目的 单例模式是一...
    雷鸣1010阅读 3,566评论 0 19
  • 参加马拉松是缘起厦门,那时跑步还没像如今这么盛兴,而厦门的马拉松在当年已经是一件盛世,我内心奔跑的种子只想有生之年...
    林下之夕阅读 284评论 0 1