美文网首页
IOS单例模式(Singleton)

IOS单例模式(Singleton)

作者: Asserts | 来源:发表于2016-06-14 14:36 被阅读0次

单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

1.单例模式的要点:

显然单例模式的要点有三个:

1.是某个类只能有一个实例;

2.是它必须自行创建这个实例;

3.是它必须自行向整个系统提供这个实例。

2.单例模式的优点:

1.实例控制:Singleton 会阻止其他对象实例化其自己的 Singleton 对象的副本,从而确保所有对象都访问唯一实例。

2.灵活性:因为类控制了实例化过程,所以类可以更加灵活修改实例化过程

下面是写单例的两种正确姿势:

1.@synchronized(self)

+(id)sharedInstance

{

static Instance*obj=nil;

@synchronized([Instance class])

{

if(!obj)

obj=[[Instance alloc]init];

}

return obj;

}

这样性能就不是很好,因为每次调用+ (id)sharedInstance函数都会付出取锁的代价。下面我们使用更加简洁的方式来实现:

2.dispatch_once

+(id)sharedInstance

{

static dispatch_once_t  pred;

static Instance*obj=nil;

dispatch_once(&pred,^{

obj=[[Instance alloc]init];

});

return obj;

}

这样的方法有很多优势,首先满足了线程安全问题,其次很好满足静态分析器要求。GCD可以确保以更快的方式完成这些检测,它可以保证block中的代码在任何线程通过dispatch_once调用之前被执行,但它不会强制每次调用这个函数都让代码进行同步控制。实际上,如果你去看这个函数所在的头文件,你会发现目前它的实现其实是一个宏,进行了内联的初始化测试,这意味着通常情况下,你不用付出函数调用的负载代价,并且会有更少的同步控制负载。

因此,以后我们使用单例模式的时候尽量使用GCD。

相关文章

  • 单例模式 Singleton Pattern

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

  • 单例模式(Singleton)

    单例模式(Singleton) 枚举单例 public enum Singleton { INSTANCE; ...

  • 单例对象

    iOS单例模式(Singleton)单例模式的意思就是:只有一个实例;单例模式确保每个类只有一个实例,而且自行实例...

  • 设计模式(2) 单例模式

    单例模式 线程安全的Singleton 会破坏Singleton的情况 线程级Singleton 单例模式是几个创...

  • 单例模式

    3、单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象...

  • iOS 单例模式

    一、介绍 iOS单例模式(Singleton)单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而...

  • IOS单例模式

    IOS单例模式(Singleton)单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例...

  • 设计模式-单例模式(Singleton)

    单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保...

  • 单例模式(Singleton)应用场景和优缺点2019-01-2

    单例(Singleton)模式 也叫单态模式 概述:单例(Singleton)模式要求一个类有且仅有一个实例,并且...

  • 单例模式(Singleton)应用场景和优缺点

    单例(Singleton)模式 也叫单态模式概述:单例(Singleton)模式要求一个类有且仅有一个实例,并且提...

网友评论

      本文标题:IOS单例模式(Singleton)

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