美文网首页
ios 开发中的单例模式

ios 开发中的单例模式

作者: 蘇哲炫爺 | 来源:发表于2016-05-02 20:22 被阅读62次

其实iOS开发中的单例模式无非就是一个类创建的对象在程序中只有一个对象!

iOS中的单例模式有分为赖汉式和饿汉式单例两种但是我们在实际开发的过程中只要掌握一种赖汉式单例就行!赖汉式单例有两种实现方式一种是普通的方式(加锁)一种是GCD

首先我们先来看一下普通的方式(加锁实现)(大家需要注意这是在ARC下)

首先要想让一个类成为单例对象首先需要定义一个全局变量和三个方法:

// 用来保存唯一的单例对象

static id _instance;

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

+ (instancetype)share+类名;

- (id)copyWithZone:(NSZone*)zone;

接下来我们就分别去实现这三个方法:

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

{

             if (_instance == nil) { // 防止频繁加锁

                      @synchronized (self) {

                            if (_instance == nil) { // 防止创建多次

                          _instance = [super allocWithZone:zone];

                                                           }

                                                       }

                                           }

                   return _instance;

}

+ (instancetype)share+类名

{

          if (_instance == nil) { // 防止频繁加锁

                   @synchronized (self) {

                            if (_instance == nil) { // 防止创建多次

                             _instance = [[self alloc] init];

                                                           }

                                                     }

                                            }

                          return _instance;

}

- (id)copyWithZone:(NSZone*)zone

{

return _instance;

}

最后就是我们的测试过程:

我分别用不同方式创建了四个对象,但是这个四个对象的内存地址打印如下图:

从内存地址的打印可见这四个对象是同一个对象!


接下来我就GCD实现单例模式做一下简单的介绍:

使用单例的步骤和上面的普通方式实现单例步骤一样只不过那三个方法的实现不一样而已啊!


打印结果也一样就不看了!小编有一个问题如果在非ARC模式下即便你写了这些你那个对象也不是单例因为在非ARC下可以释放对象;如果要实现单例必须实现另外的三个方法release()、retain()、retainCount()这三个方法;还有一个问题小编要在这里向广大读者提醒一下如果你的项目里面有三个类都是单例你是不是要讲我上面的代码写三遍呢?如果不是请留下你们宝贵的意见,在留下你们宝贵的意见的同时我给大家一个意见就是用超类但是你使用之后会发现那样不行?小编这里有一种方法但是我希望读者朋友留下自己的意见!

相关文章

  • iOS单例模式容错处理

    ios 单例模式容错处理 1、单例模式的使用和问题解决 在ios开发的过程中,使用单例模式的场景非常多。系统也有很...

  • iOS 单例模式

    关于单例模式的详解,看完这几篇,就完全了然了。iOS 单例模式iOS中的单例模式iOS单例的写法

  • IOS 设计模式

    IOS开发中几种设计模式:单例模式、观察者模式、MVC模式、代理模式 一、单例模式 场景:确保程序运行期某个类,只...

  • iOS中的单例模式

    iOS开发中常用到2中设计模式,分别是代理模式和单例模式,本文主要介绍下单例模式 单例模式的作用 可以保证在程序运...

  • 单例

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

  • 单例

    在iOS开发时,总是会遇到单例模式,单例即是一种模式,更是一种思想,单例模式是借鉴了数学中的单集合。就是一个集合中...

  • IOS开发过程中常用的设计模式

    当下IOS开发的过程中,常用的设计模式有:单例模式、委托模式、观察者模式和MVC模式; 一、单例模式 我们平时常用...

  • 【浅析iOS中常用设计模式】

    单例模式 单例模式是iOS开发中常用的一种设计模式,目的在于创建一次对象,多地方使用。系统中的单例例如:UIApp...

  • iOS单例模式

    单例模式是在iOS开发中常用的开发模式之一,使用单例模式是为了保证在整个程序中,所定义的属性值是唯一的 之前对于单...

  • ios 开发中的单例模式

    其实iOS开发中的单例模式无非就是一个类创建的对象在程序中只有一个对象! iOS中的单例模式有分为赖汉式和饿汉式单...

网友评论

      本文标题:ios 开发中的单例模式

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