如何创建一个weak singleton单例

最近看了一篇文章(原文链接),介绍一个新的概念叫做[weak singleton],这是一种特殊的单例,这个单例有一个很有意思的特性:在所有使用该单例的对象都释放后,单例对象本身也会自己释放。平常我们创建的单例,在程序的生命周期内,都会一直存活着。「weak singleton」的创建方式如下:

+ (id)sharedInstance
{
    static __weak ASingletonClass *instance;
    ASingletonClass *strongInstance = instance;
    @synchronized(self) {
        if (strongInstance == nil) {
            strongInstance = [[[self class] alloc] init];
            instance = strongInstance;
        }
    }
    return strongInstance;
}

github地址

你可能感兴趣的:(如何创建一个weak singleton单例)