ios支持arc的单例模式的编写

原创 2013年12月03日 16:35:08

今天在别人写的关于单例模式的编写,感触挺深,因为关于单例模式的编写向来有很多争议,我觉得以下这个方法很适合我们平时的编程习惯,并且支持arc模式,


+ (MyViewController*)sharedMyViewController
{
    static MyViewController *sharedSVC;
    static dispatch_once_t onceToken;
    //dispatch_once不仅意味着代码仅会被运行一次,而且还是线程安全的,这就意味着你不需要使用诸如@synchronized之类的来防止使用多个线程或者队列时不同步的问题。
    dispatch_once(&onceToken, ^{
        sharedSVC = [[self alloc] init];
    });
    
    return sharedSVC;
}


dispatch_once用于检查该代码块是否已经被调度的谓词(是一个长整型,实际上作为BOOL使用)。它还接收一个希望在应用的生命周期内仅被调度一次的代码块,对于本例就用于shared实例的实例化。

该方法有很多优势:

           1 线程安全
           2 很好满足静态分析器要求
           3 和自动引用计数(ARC)兼容
           4 仅需要少量代码

OC坑集: ARC单例模式

OC 的单例也是比较让人蛋疼的. ToolManager.h#import @interface ToolManager : NSObject @property (copy, nonatomi...
  • AndroidBluetooth
  • AndroidBluetooth
  • 2015年06月23日 22:24
  • 1217

【iOS】ARC-MRC下的单例及其应用

单例的应用十分普遍,单例模式使一个类只有一个实例。 *易于供外界访问. *方便控制实例个数,节约系统资源. *OC中的常见单例: UIApplication,   NSNotificationC...
  • xn4545945
  • xn4545945
  • 2014年07月09日 02:09
  • 8773

iOS 中的单例模式

http://www.jianshu.com/p/e535c7575d72 在iOS中有很多单例对象,比如UIApplication,UIScreen等等,那我们自己可以实现单例吗?答案是肯...
  • jeffasd
  • jeffasd
  • 2016年07月26日 10:20
  • 203

OC宏定义实现单例设计模式

单例设计模式是在开发中经常可以看到的一种设计模式,不管是在 Cocoa Touch框架还是我们自己的业务逻辑中都可以看到它的身影。 1、首先解答一个问题,什么是单例设计模式呢?      它可以保证在...
  • jb448372210
  • jb448372210
  • 2015年07月20日 23:03
  • 694

单例模式在iOS中的应用——三种创建单例方法对比

单例模式优点 单例模式在内存中只有一个实例,减少了内存开支。特别是一个对象需要频繁的创建、销毁时,而创建与销毁的性能有无法优化,单例模式的优势就非常明显。单例模式只生成一个实例,减少了系统性能开...
  • quanzheng92
  • quanzheng92
  • 2014年11月10日 21:22
  • 1576

iOS单例模式(浅谈)

单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 单例的特点: 1.单例对象可以存储一些共享的信息,每个对象都能访问和修...
  • u013808667
  • u013808667
  • 2016年05月16日 11:05
  • 2086

php如何实现单例模式

凡是讲到设计模式,无一例外的都会讲到单例模式,单例模式相对于其他设计模式来讲,要容易理解的多,但是要实现一个严格意义上的单例模式,很简单吗?...
  • wangshiliang1990
  • wangshiliang1990
  • 2016年08月12日 01:30
  • 704

Node.js单例模式

Node.js 单例模式实现
  • LaFengDe9
  • LaFengDe9
  • 2017年05月01日 10:23
  • 1252

iOS-创建单例模式

iOS中创建单例模式 方法一:#pragma mark - 设计单例模式 static id _instance; //重写allocWithZone:方法 +(instancetype)alloc...
  • qiuxuewei2012
  • qiuxuewei2012
  • 2016年03月31日 15:30
  • 767

OC中使用单例模式

创建一个单例很多办法。我先列举一个苹果官方文档中的写法。   [cpp] view plaincopy static AccountManager *DefaultM...
  • DJH996064549
  • DJH996064549
  • 2016年02月24日 15:22
  • 449
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios支持arc的单例模式的编写
举报原因:
原因补充:

(最多只允许输入30个字)