iOS简单学之10-单例

简单说来,单例就是使得类中的一个对象成为系统中的唯一实例。

iOS 4.0 及以后, 我们一般用这种方法来创建单例。

+ (instancetype)sharedInstance{
    //必须静态或全局
    static YFSessionManager *sharedInstance; 
    static dispatch_once_t onceToken;
    
    dispatch_once(&onceToken, ^{

        sharedInstance = [[YFSessionManager alloc] init];
        sharedInstance.recodeSessions = [NSMutableArray new];
    });
    
    return sharedInstance;
}

查看函数dispatch_once的原型

 void dispatch_once(
    dispatch_once_t *predicate,
    dispatch_block_t block);

第一个参数predicate: 检查后面第二个参数所代表的代码块是否被调用的谓词,
第二个参数则是在整个应用程序中只会被调用一次的代码块。
dispach_once函数中的代码块只会被执行一次,而且还是线程安全的。
  • 一语:这个方法可以在创建单例或者某些初始化动作时使用,
    以保证其唯一性, 而且该方法是线程安全的。

你可能感兴趣的:(iOS简单学之10-单例)