1.使用GCD:
(1)在.h文件中提供一个类方法,用于返回该类唯一的一个对象
+ (Person *)sharePerson;
(2)在.m文件中声明一个Static类型的对象,并将其置为nil,然后实现sharePerson和allocWithZone方法
// 静态全局变量
static Person *person = nil;
// 对外提供的获取单例的方法
+ (Person *)sharePerson {
if (!person) {
person = [[self alloc] init];
}
return person;
}
// 防止用户alloc
+ (instancetype)allocWithZone:(struct _NSZone *)zone {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
person = [super allocWithZone:zone];
});
return person;
}
2.不使用GCD:
(1)在.h文件中提供一个类方法,用于返回该类唯一的一个对象
+ (Person *)sharePerson;