应用场景
/*
1. 有一个全局的实例化的类方法
2. 保存在静态区,单例的生命周期和应用程序一样长
3. 内存中有且只有一个副本/对象/实例,指保存一份
*/
// onceToken 是有一个初始值
// 第一次执行的时候,会判断是否是初始值,如果是初始值是0,就执行block内部的代码
// 第一次执行完成之前,会重置初始值为非0
==========================静态变量实现单利
static InstanceClass *instance;
+ (InstanceClass *)defaultInstance{
@synchronized (self){
if (instance == nil) {
instance = [[InstanceClass alloc] init];
}
}
return instance;}
=============GCD实现单利;
//创建一个单利对象
+ (instancetype)sharedAccountManager
{
// 定义静态的空对象
static AccountManager *manager;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [[AccountManager alloc] init];
});
return manager;
}
系统中提供的单利:================================================
应用程序单利:
UIApplication *app = [UIApplicationsharedApplication];
NSFileManager *fileManager=[NSFileManagerdefaultManager];
偏好设置: NSUserDefaults *def=[NSUserDefaultsstandardUserDefaults];
通知: NSNotificationCenter *noti=[NSNotificationCenterdefaultCenter];
NSURLCache(请求缓存):
NSHTTPCookieStorage(应用程序cookies池):