美文网首页iOS基础知识iOS内功修炼
iOS开发-单例模式(ARC与MRC)

iOS开发-单例模式(ARC与MRC)

作者: 元宇宙协会 | 来源:发表于2015-12-09 11:45 被阅读781次

单例一般作为工具类
单例命名:一般情况下如果一个类是单例,那么就会提供一个类方法用于快速创建单例对象
而且这个类方法的名称是有一定的规则:share + 类名称 / default + 类名称
ARC(自动引用计数模式)
![Paste_Image.png](http:https://img.haomeiwen.com/i642887/5218c39a7d979d20.png?
imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Paste_Image.png
实现下面这两个方法前提遵守(NSCopying, NSMutableCopying) Paste_Image.png

MRC
这个里面就必须注意retainCount release等操作
因为单例是全局只有一份,一旦release,计数器变为0,那么再去创建单例对象就会造成坏内存访问。

Paste_Image.png

这里其实还可以对引用计数器做一步操作,也就是实现这一步,你肯定是开发经验充足的程序员,不实现也不会有什么后果

Paste_Image.png

因为打印系统的一些单例对象的计数器会发现打印出来数值会很大,所以我们创建出来的单例实现上述方法,比格自然就提升上去了。(注:返回的数值可以自己填写,也可以MaxFloat)

虽然上面的单例代码已经解决了单例问题,但是复用性特别不好,我们需要可以很方便的在ARC或者MRC下进行开发的单例模式

Paste_Image.png

我们可以在else的里面把MRC的代码写进去。
这样系统就会根据开发环境来判断

一些情况下:我们经常用到单例这个类,但是这里面后续会写很多方法,所以我们会搞很多子类,子类里面有网络、工具类的单例,所以子类按照逻辑也要实现单例。

那么问题就来了:
1、一个单例子类(例如:son)创建对象调用alloc方法
2、会通过allocWithZone创建一个全局单例对象
3、这一个创建出来的全局单例默认就是子类的类型(son)
4、创建父类对象,也是通过alloc方法,因为单例只有一个,所以谁先调用,整个子父类创建出来的类型就是优先创建的单例对象类型

所以避免出错,对子类修改,尽量不要继承单例类。我们需要重写一遍单例代码。

到了这里就需要很深的功底:我们一般使用宏来延生单例扩展性
因为单例类里面的单例创建代码都是一样的。

#define interfaceSingle  +(instancetype)shareTool

// 这两句代码是一样的,下面可以通过你传入的名字来显示创建的单例是什么(name)类型

#define interfaceSingle(name)  +(instancetype)share##name

同理也可以实现方法实现里面的。

粘贴一段,后面的\是为了链接代码在编译过程中被识别,一定要这么做!


Paste_Image.png

相关文章

  • iOS之单例设计模式

    iOS开发多线程篇—单例模式(ARC\MRC) 简单说明: 设计模式:多年软件开发,总结出来的一套经验、方法和工具...

  • 单例模式(单例宏)

    单例模式 单例模式(arc) 类的实现 调用单例 单例模式(mrc) 除了上边的方法我们在mrc的时候还需要增加一...

  • iOS开发-单例模式(ARC与MRC)

    单例一般作为工具类单例命名:一般情况下如果一个类是单例,那么就会提供一个类方法用于快速创建单例对象而且这个类方法的...

  • iOS浅谈单例

    ARC MRC 抽取单例 单例模式是不能使用继承的 具体使用

  • iOS 单例模式

    概念相关 (1)单例模式 (2)使用场合 2 ARC实现单例 (1)步骤 (2)相关代码 3 MRC实现单例 (1...

  • iOS开发中ARC和MRC都可以用的单例模式?

    ** 单例模式- 通用版本(ARC&MRC)** (1)有意思的对话 0...

  • The Singleton Pattern 单例模式

    单例模式的作用 单例模式的使用场合 单例模式在ARC\MRC环境下的写法有所不同,需要编写2套不同的代码 可以用宏...

  • iOS - ARC与MRC的单例设计模式

    单例设计模式(Singleton) �定义 就是保证某个类创建出来的对象从始到终只有一个的一种方案 作用 节省内存...

  • iOS项目中的ARC与MRC切换,混编

    项目中ARC与MRC模式的切换方法: ARC与MRC混编:

  • oc单例的快速创建

    oc工程中 都会用到单例模式进行应用中数据的存储,然而在创建单例的过程会比较的繁琐 需要区分MRC 与ARC 给大...

网友评论

    本文标题:iOS开发-单例模式(ARC与MRC)

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