IOS单例模式

单例:

--1. 概念:单例模式是确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类,称为单例类。
--2. 使用场景:iOS中几乎所有的APP都只能同时登录一个帐号,而且是电商类的APP中下单是也要带着用户ID,这时候单例就非常重要了。

创建方法

** 1.使用线程锁@synchronized(self) {} 控制某一时间只允许一个进程访问初始化方法 **

 static User *instance
 + (instancetype)shareUser
{
        @synchronized(self) {     //设置同时只有一个线程可以访问shareUser方法
        if (!instance) {
            instance = [[self alloc] init];
        }
    }
    return instance;
}

--有人提供了一种说是绝对安全的方法。就是将 allocWithZone copyWithZone 等方法都重写

** 2.使用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");

输出结果为:

lily.name = xiaoming```

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



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

推荐阅读更多精彩内容

  • 简介: 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统...
    RunnerFL阅读 649评论 0 0
  • (1)单例模式 在程序运行过程,一个类只有一个实例 (2)使用场合 在整个应用程序中,共享一份资源(这份资源只需要...
    奥斯卡先生阅读 343评论 1 0
  • IOS单例模式(Singleton)单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例...
    Living_元宝儿阅读 1,342评论 1 6
  • iOS设计模式——单例模式http://blog.csdn.net/lovefqing/article/detai...
    LV大树阅读 729评论 0 1
  • 单例模式的作用:可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问,从而方便地控制了实例个数,并...
    BEYOND黄阅读 301评论 0 3