GCD实现单例模式

来源:互联网 发布:kali网络摄像头 编辑:程序博客网 时间:2024/06/06 02:04

单例模式 :其实就是一种设计模式。

适用场合:单例模式一般会在整个应用程序中,共享一份资源(这份资源只需要创建初始化1次)的时候使用。

我们以创建数据库管理类为例结合代码:

#import "DataBase.h"


static DataBase *_dataBase =nil;


@interface DataBase ()<NSCopying>{

    FMDatabase *_dbManager;

}


@end


@implementation DataBase


//GCD 单例

//这个方法服务于alloc无论外界调用多少次alloc返回的都是一个内存空间

+(instancetype)allocWithZone:(struct_NSZone *)zone{

    staticdispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        _dataBase = [superallocWithZone:zone];

    });

    return_dataBase;

}

//共享方法,便于外界调用

//但是避免不了外界init多次,所以要带入init,这里的alloc会调用上面的方法

+(instancetype)sharedDBManager{

    staticdispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        _dataBase = [[DataBasealloc]init];

    });

    return_dataBase;

}

//这个方法避免外界实现copy方法(这里要遵循NSCopying协议)

-(id)copyWithZone:(NSZone *)zone{

    return_dataBase;

}



0 0
原创粉丝点击