- #import "Person.h"
- @implementation Person
- // 定义个全局变量(类方法中不能使用成员变量)
- static Person *_instace;
- // 重写allocWithZone:方法
- + (id)allocWithZone:(struct _NSZone *)zone
- {
- // 只执行一次里面的代码即只分配一次内存空间,而且是线程安全的
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- _instace = [super allocWithZone:zone];
- });
-
- return _instace;
- }
- // 提供工厂方法供外面使用
- + (instancetype)sharedPerson
- {
- if (_instace == nil) {
- _instace = [[Person alloc] init];
- }
- return _instace;
- }
- @end
复制代码 |