美文网首页
iOS单例设计模式

iOS单例设计模式

作者: Coulson_Wang | 来源:发表于2017-06-17 14:44 被阅读0次

一、在ARC环境下实现单例

1.创建一个单例类,假设类名为ClassName

2.在类的实现中,声明一个全局静态变量,确保该变量在整个程序运行时期内只会存在一份,且不会被外部修改。
static ClassName *_instance;

3.重写类的allocWithZone:方法

  • 可以通过懒加载的方式实现,不过为了确保线程安全,需要加上互斥锁,代码如下:
+ (instancetype)allocWithZone:(struct _NSZone *)zone {
    @synchronized (self) {
        if (!_instance) {
            _instance = [super allocWithZone:zone];
        }
    }
    return _instance;
}```
- 也可以通过GCD一次性代码的方法实现,也可以确保线程安全,代码如下:

  • (instancetype)allocWithZone:(struct _NSZone *)zone {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    _instance = [super allocWithZone:zone];
    });
    return _instance;
    }

4.声明并实现一个工厂方法,方法最好以`shared`或`default`开头,返回单例的实例变量。
  • (instancetype)sharedClassName {
    return [[self alloc] init];
    }

5.重写`copyWithZone:`和`mutableCopyWithZone:`方法,避免外部调用`copy`或`mutableCopy`时开辟新的储存空间。
  • (id)copyWithZone:(NSZone *)zone {
    return _instance;
    }
  • (id)mutableCopyWithZone:(NSZone *)zone {
    return _instance;
    }

</br>

###二、在MRC环境下实现单例
在ARC的实现基础上,重写以下几个方法,废除掉单例的引用计数机制即可。
1.重写release方法,使调用release时什么都不做。
  • (oneway void)release {

}

2.重写retain方法,使调用retain时不改变引用计数,仅返回实例变量。
  • (instancetype)retain {
    return _instance;
    }
3.重写retainCount方法,返回一个最大的数,让调用者明白这是一个单例
  • (NSUInteger)retainCount {
    return MAXFLOAT;
    }

相关文章

  • iOS模式设计之--创建型:1、单例模式

    iOS模式设计之--1、单例模式

  • 单例模式 Singleton Pattern

    单例模式-菜鸟教程 iOS中的设计模式——单例(Singleton) iOS-单例模式写一次就够了 如何正确地写出...

  • 【设计模式】单例模式

    学习文章 iOS设计模式 - 单例 SwiftSingleton 原理图 说明 单例模式人人用过,严格的单例模式很...

  • 单例

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

  • 谈一谈iOS单例模式

    这篇文章主要和大家谈一谈iOS中的单例模式,单例模式是一种常用的软件设计模式,想要深入了解iOS单例模式的朋友可以...

  • iOS知识梳理3:设计模式

    iOS有哪些常见的设计模式?单例模式/委托模式/观察者模式/MVC模式 单例模式 单例保证了应用程序的生命周期内仅...

  • iOS 单例模式

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

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • 单例的2种写法

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

  • IOS 设计模式

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

网友评论

      本文标题:iOS单例设计模式

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