iOS单例模式

单例模式

  • 解决“应用中只有一个单例”的一类问题。

Objecttive-C实现原理

  • 单例模式一般会封装一个静态属性,并提供静态实例方法。

代码实现

#import 
@interface WMNewRedPacketManager : NSObject
+ (instancetype)sharedManager;
@end
#import "WMNewRedPacketManager.h"
#import "UIApplication+Addition.h"

static WMNewRedPacketManager *sharedManager = nil;
@implementation WMNewRedPacketManager

+ (instancetype)sharedManager {
    static dispatch_once_t pred;
    dispatch_once(&pred, ^{
        sharedManager = [[self alloc] init];
    });
    return sharedManager;
}

static WMNewRedPacketManager *sharedManager是静态变量,类方法+ (instancetype)sharedManager;sharedManager方法采用了GCD(Grand central Dispatch)技术,是一种基于C语言的多线程访问技术。上述代码中,dispatch_once方法是由GCD提供的结构体,使用时需要将GCG地址创给dispath_once函数。dispath_once能够记录代码块是否被调用过。
dispath_once函数不仅意味着代码块仅会被运行一次,而且还意味着次运行还是线程同步的。也就是说,当我们使用了dispatch_once函数时,就不在需要使用诸如@synchronized之类的语句;

你可能感兴趣的:(iOS单例模式)