- 单例模式
什么是单例模式
单例模式概念 :
一个类只允许有一个实例,在整个程序中需要多次使用,共享同一份资源的时候,就可以创建单例,一般封装成工具类使用,苹果封装成单例常用的有UIApplication,NSUserDefaults,NSNotificationCenter,NSFIleManager等等
为什么要使用单例模式
单例模式的出现为我们带来了很大的好处,我们可以将那些初始化比较耗费资源的操作用单例来设计,比如在我的项目中用到了蓝牙,而且在不同的界面都有用到,我就把蓝牙的Manager做成了一个单例,这样只有第一次初始化蓝牙模块的时候耗时一点,节省了时间。另外可以利用单例来传值等操作。
怎么使用单例模式
这里贴出一个比较常用的,性能也相对好的单例创建方式
+ (Singleton *)shareInstance{
static Singleton * _singleton = nil ;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
if (singleton_manager == nil) {
singleton_manager = [[Singleton alloc] init];
}
});
return (Singleton *)_singleton;
}
单例模式的缺点
1. 单例模式实际上延长了对象的生命周期,那么就存在内存问题,因为这个对象在程序的整个生命都存在。如果使用过多,会导致被占用而无法被释放的情况。
2. 由于单利模式中没有抽象层,因此单例类的扩展有很大的困难。