0
点赞
收藏
分享

微信扫一扫

weak Singleton 自动释放的单例

亿奇学 2021-09-29 阅读 21
日记本

我们接触的大多数单例的使用场景,被创建的单例都会一直存活在内存中,造成一定程度的资源浪费。
之前看过一篇文章介绍到 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:方法。

举报

相关推荐

0 条评论