标签:
1 单例的实现见之前写过的一篇文章 iOS单例的快速实现
static InstanceClass *instance; + (InstanceClass *)defaultInstance{ @synchronized (self){ if (instance == nil) { instance = [[InstanceClass alloc] init]; } } return instance;}
2 单例的概念复习下
单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
3 销毁单例
今天遇到个需求,需要在切换用户时切换数据库文件,而我是通过单例来获取的,所以我就想能不能在切换用户的时候销毁当前单例,在登录新用户之后就会重新初始化单例。见代码:
static LKDBHelper* db;
+(LKDBHelper *)getUsingLKDBHelper{ @synchronized(self) { if(db == nil) { NSString*dbpath = [GMFileHelper getUserDbPath]; //用户切换用户时候取不同的db路径 如微信多用户数据库 LiChen.db FanBingbing.db db = [[LKDBHelper alloc]initWithDBPath:dbpath]; } } return db; }
//退出登录时 销毁单例 当登录新用户时,单例就会重新初始化 + (void)attemptDealloc { db = nil; }
实践起来是可行的,只要有退出登录操作,就销毁单例,保证登录另一个用户时,单例重新初始化。从某些意义来说,已经不像单例了。浅显的认知,有错误欢迎指出。谢谢。
标签:
原文地址:http://www.cnblogs.com/hahahahahaha/p/5077343.html