天天看点

IOS之单例模式IOS单例模式

IOS单例模式

1 普通单例

static HAObjectStudy *defaultStudy = nil;

+(HAObjectStudy *)getInstance
{
    @synchronized(self){
        if(defaultStudy == nil){
            defaultStudy = [HAObjectStudy new];
            NSLog(@"defaultStudy 被getInstance创建");
        }
        return defaultStudy;
    }
}
           

通用方式,自己控制线程安全

2 initialize单例

static HAObjectStudy *defaultStudy = nil;

+ (void)initialize
{
    [super initialize];
    NSLog(@"initialize --- 初始化,类在创建的时候进行初始化要进行的操作");
    if (defaultStudy == nil) {
        defaultStudy = [HAObjectStudy new];
        NSLog(@"defaultStudy 被initialize创建");
    }
}

+(HAObjectStudy *)getInitializeInstance
{
    return defaultStudy;
}
           

借助Object-c的类初始化机制,不用控制线程安全

说明:程序的类包括加载,连接,初始化过程,当类第一次使用的时候运行唯一一次initialize初始化,所以可取巧用来支持单例模式。