单例模式

2016-07-28  本文已影响14人  Supersweet007

单例模式的作用

可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问
从而方便地控制了实例个数,并节约系统资源

单例模式的使用场合

在整个应用程序中,共享一份资源(这份资源只需要创建初始化1次)
<p>单例模式在ARC\MRC环境下的写法有所不同,需要编写2套不同的代码 可以用宏判断是否为ARC环境 </p>

<pre>#if __has_feature(objc_arc)
//ARC

else

//MRC

endif</pre>

<p>提供1个类方法让外界访问唯一的实例 </p>

<pre>+ (instancetype)sharedMusicTool {
    if (_instance == nil) { // 防止频繁加锁
        @synchronized(self) {
            if (_instance == nil) { // 防止创建多次
               _instance = [[self alloc] init];
            }
        }
    }
    return _instance;
}
+(id)allocWithZone:(struct _NSZone *)zone {

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

}</pre>

上一篇 下一篇

猜你喜欢

热点阅读