iOS单例销毁

来源:互联网 发布:vb中case是什么意思 编辑:程序博客网 时间:2024/05/16 12:44


1 单例的实现见之前写过的一篇文章 iOS单例的快速实现


static InstanceClass *instance;                                                                                                 + (InstanceClass *)defaultInstance{    @synchronized (self){        if (instance == nil) {            instance = [[InstanceClass alloc] init];        }    }        return instance;}

2 单例的概念复习下

单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。


3 销毁单例

 今天遇到个需求,需要在切换用户时切换数据库文件,而我是通过单例来获取的,所以我就想能不能在切换用户的时候销毁当前单例,在登录新用户之后就会重新初始化单例。见代码:

static LKDBHelper* db;<pre name="code" class="objc">+(LKDBHelper *)getUsingLKDBHelper{  @synchronized(self) {        if(db == nil) {             NSString*dbpath = [GMFileHelper getUserDbPath]; //用户切换用户时候取不同的db路径 如微信多用户数据库 LiChen.db FanBingbing.db            db = [[LKDBHelper alloc]initWithDBPath:dbpath];           }    }    return db;}
<pre name="code" class="objc">//退出登录时 销毁单例 当登录新用户时,单例就会重新初始化+ (void)attemptDealloc{    db = nil;}

实践起来是可行的,只要有退出登录操作,就销毁单例,保证登录另一个用户时,单例重新初始化。从某些意义来说,已经不像单例了。浅显的认知,有错误欢迎指出。谢谢。


0 0