iOS设计模式-单例模式

单例模式

保证一个类只有一个实例,并提供一个访问它的全局访问点

单例模式

何时使用单例模式

  • 类只能有一个实例,而且必须从一个为人熟知的访问点对其进行访问,比如工厂方法。
  • 这个唯一的实例只能通过子类化进行扩展,而且扩展的对象不会破坏客户端代码。

单例的优缺点

单例的优点(主要优点)

  • 实例控制:Singleton 会阻止其他对象实例化其自己的 Singleton 对象的副本,从而确保所有对象都访问唯一实例
  • 因为其上面的特点,对于项目中的个别场景的传值,存储状态等等更加方便

单例的缺点(主要缺点)

  • 单例实例一旦创建,对象指针是保存在静态区的,那么在堆区分配空间只有在应用程序终止后才会被释放(特殊处理除外)
  • 单例不能继承

在Objective-C中实现单例模式

不考虑线程安全的单例模式

static SingleCase *manager = nil;    
     
+ (SingleCase *)defaultManager {    
    if (!manager){   
        SingleCase = [[self alloc] init];    
        return manager;   
        }  
} 

线程安全的单例模式

+ (SingleCase *)sharedManager    
{    
        static SingleCase *ManagerInstance = nil;    
        static dispatch_once_t predicate;    
        dispatch_once(&predicate, ^{    
                ManagerInstance = [[self alloc] init];     
        });    
    return ManagerInstance;    
}  
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容