简介
单例模式的定义
- 简单的来说,一个单例类,在整个程序中只有一个实例,并且提供一个类方法供全局调用,在编译时初始化这个类,然后一直保存在内存中,到程序(APP)退出时由系统自动释放这部分内存。
- 单例只能初始化一次,重复初始化单例类会直接崩溃报错
哪些地方会用到单例模式
- 工具类 公共跳转类 经常调用的类 (掌邮的HttpClient)
系统为我们提供的单例类
- UIApplication
- NSNotificationCenter
- NSFileManager
- NSUserDefaults
- NSURLCache
- NSHTTPCookieStorage
实现单例模式
1个类的对象,无论在何时创建也无论在什么地方创建也无论创建多少次,创建出来的都是同1个对象。
2.无论如何创建对象,最终都会调用alloc方法来创建对象,
alloc方法的内部,其实什么都没有做,只是调用了allocWithZone:方法 实际上真正申请空间创建对象的事情是allocWithZone:方法
重写+allocWithZone:
+ (instancetype)allocWithZone:(struct_NSZone *)zone
{
static id instance = nil;
if(instance == nil)
{
instance = [super allocWithZone:zone];
}
return instance;
}
单例模式的规范
如果类是1个单例模式.要求为类提供1个类方法.来返回这个单例对象。类方法的名称必须以shared类名;default类名; 实现都是 return [self new];
什么时候需要单例的类
1.单例的特点
无论何时、何地、创建对象,也不管创建多少次对象,得到都是同1个对象。单例对象可以被共享,存储在单例对象中的数据可以被共享。
也就是无论在什么地方创建单例对象访问的都是同1个对象。
2.做游戏:
游戏面板的宽度:800
游戏面板的高度:600
这两个数据基本上在很多的地方都会使用到。
如果数据需要被整个程序所共享,将数据以属性的方式存储在单例对象中.