美文网首页
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