美文网首页
weak Singleton 自动释放的单例

weak Singleton 自动释放的单例

作者: YYYYYY25 | 来源:发表于2018-10-23 12:05 被阅读15次

我们接触的大多数单例的使用场景,被创建的单例都会一直存活在内存中,造成一定程度的资源浪费。
之前看过一篇文章介绍到 weak Singleton,在所有使用该单例的对象全部释放后,单例本身也会自动释放。这就很有效的解决了上面的问题。

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

PS:如果在OC中保证创建的对象始终相同,应该再重写allocWithZone:和copyWithZone:方法。

相关文章

网友评论

      本文标题:weak Singleton 自动释放的单例

      本文链接:https://www.haomeiwen.com/subject/wknozftx.html