美文网首页
IOS之单例,你真的会写单例么?

IOS之单例,你真的会写单例么?

作者: 勇敢的我2017 | 来源:发表于2019-08-22 16:32 被阅读0次

一、草草写法

先附上不大部分人的写法

SingleModel.h

SingleModel.m

测试代码:

打印结果:

通过上边的测试,可以看出来通过alloc创建对象时,是有问题的,所以要封锁初始化的方法

如alloc, copy,mutableCopy,new

原理:

创建对象的步骤分为申请内存(alloc)、初始化(init)这两个步骤,我们要确保对象的唯一性,因此在第一步这个阶段我们就要拦截它。当我们调用alloc方法时,OC内部会调用allocWithZone这个方法来申请内存,我们覆写这个方法,然后在这个方法中调用shareInstance方法返回单例对象,这样就可以达到我们的目的。拷贝对象也是同样的原理,覆写copyWithZone方法,然后在这个方法中调用shareInstance方法返回单例对象

二 、正确写法

1、shareInstance单例方法中,变量的初始化改成[[super allocWithZone:NULL] init]

2、实现copyWithZone:和mutableCopyWithZone:方法

测试代码:

打印结果:

无论通过哪种方式创建出来的实例对象,其内存地址都是一样的,所以该种写法才是严谨的。

相关文章

  • IOS之单例,你真的会写单例么?

    一、草草写法 先附上不大部分人的写法 SingleModel.h SingleModel.m 测试代码: 打印结果...

  • 单例

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

  • 单例模式(Java内部类加载顺序)

    你真的会写单例模式吗——Java实现Android设计模式源码解析之单例模式深度分析 Java 的枚举类型:枚举的...

  • 你真的会写单例吗?

    你真的会写单例吗? 摘录来源 单例的正确姿势 Java单例模式可能是最简单也是最常用的设计模式,一个完美的单例需要...

  • 单例模式的优化方案

    参考:你真的会写单例吗? 单例模式最常见的就是懒汉式加载: 例: 当调用getInstance方法时才去创建对象,...

  • iOS 单例模式

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

  • 设计模式之你真的了解单例模式么?

    问题思考 你知道什么是单例模式么?你能写出一个性能有保障并且安全的单例模式么? 首先我们先明确单例模式的概念,单例...

  • 你真的会写单例?

    提到单例模式,相信都不会陌生,今天对其进行总结。 以下是单例模式的特点: 单例类只能有一个实例。 单例类必须自己自...

  • iOS开发 单例使用问题

    iOS开发 单例使用问题 iOS开发 单例使用问题

  • iOS开发 单例使用问题

    iOS开发 单例使用问题 iOS开发 单例使用问题

网友评论

      本文标题:IOS之单例,你真的会写单例么?

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