单例模式:整个程序的一个类只能有一个实例对象:(UIApplication、NSUserDefaults等都是IOS中的系统单例)
1.物理设备 eg:打印机
2.不可多个同时存在的资源 eg:数据库
单例的写法:
这是第一种,也是最简单、最常用的一种:
#import "FileOpration.h"
static FileOpration *instance = nil; //静态变量,从定义开始到整个程序结束
@implementation FileOpration
+ (instancetype)sharedFileOpration{
if (instance == nil) {
instance = [[FileOpration alloc]init];
}
return instance;
}
@end
第二种写法,加入了线程,以及重写alloc方法:
+ (FileOperation *)sharedManager{
static FileOperation *instance = nil;
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
instance = [[self alloc] init];
});
return ManagerInstance;
}
/* 重写alloc方法,在调用alloc方法的时候实际上是默认调用allocWithZone */
+ (instancetype)allocWithZone:(struct _NSZone *)zone{
return [self sharedOperation];
}