iOS开发单例的写法

2018-10-18  本文已影响0人  我的心都有自己喜欢做个爱豆一样

单例,singleton Instance, 特点:全局里独一无二的,只有一个实例,只初始化一次;

一般是两种写法,一个是GCD的写法,一个是普通的加锁的写法;

GCD写法

+ (id)sharedInstance {

    staticInstance*sharedInstance =nil;

    staticdispatch_once_tonceToken;

    dispatch_once(&onceToken, ^{

        sharedInstance = [[Instancealloc]init];

    });

    returnsharedInstance;

}

+ (id)sharedInstance {

    staticInstance*sharedInstance =nil;

    staticdispatch_once_tonceToken;

    dispatch_once(&onceToken, ^{

        sharedInstance = [[Instancealloc]init];

    });

    returnsharedInstance;

}

onceToken默认值是0,只有等于0的时候才会执行大括号里的代码(也就是初始化),初始化操作执行后,就会变成一个不为零的数,保证初始化一次。

普通写法

+ (id)sharedInstance {

    staticInstance*sharedInstance =nil;

    @synchronized (self) {

        if(sharedInstance ==nil) {

            sharedInstance = [[Instancealloc]init];

        }

    }

    returnsharedInstance;

}

上一篇下一篇

猜你喜欢

热点阅读