单例的销毁

单例设计模式是iOS开发中一种非常常用的设计模式,大家也都很熟悉了。这里要说的是单例的销毁。由于某些需求,比如某个单例保存了用户信息,退出登录以后要清空用户信息,所以需要销毁这个单例。
代码如下:

#import <Foundation/Foundation.h>

@interface DXTest : NSObject

+ (DXTest *)sharedInstance;
+ (void)attempDealloc;

@end
#import "DXTest.h"

static dispatch_once_t once;
static id instance;

@implementation DXTest

+ (id)sharedInstance 
{
    dispatch_once(&once, ^{
        instance = [self new];
    });
    return instance;
}
- (void)dealloc
{
    NSLog(@"DXTest--释放了");
}
+ (void)attempDealloc
{
    once = 0; // 只有置成0,GCD才会认为它从未执行过.它默认为0.这样才能保证下次再次调用shareInstance的时候,再次创建对象.
    instance = nil;
}

@end

有人担心销毁后不能重新创建。但是经过本人实测,调用销毁方法后,再调用sharedInstance也是可以重新创建的。所以不用担心这个。
(单例的创建准确来说其实还要重写其他几个方法,这里重点是销毁,所以就把那几个方法省略了。)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 9,736评论 4 34
  • 开学第二十周第五天 2017年1月12日 星期五 多云 妈妈和宝贝系统读经第131周第5天,累积921天 ...
    晨宇晨曦阅读 2,548评论 0 0
  • 习惯会影响一个人做事的方式,也会直接影响效率。我经常在项目完成后自我总结,有哪些做得好的,有哪些做得不好的?然后把...
    小笨憨阅读 3,471评论 0 0
  • 11.1 周三 晴 好快啊,就这样一个月就过了。前两天没记录是因为流量用完了。 难得的好天气,想晚上出去逛逛的,结...
    炎炎景历阅读 650评论 0 0
  • “跳楼”是跳绳于楼顶的意思。最近一年主要的运动就是跳绳了,生活离不开跳绳。 在两百天之前问我为什么跳绳?跳绳的好处...
    积木同学阅读 3,068评论 0 0