单例模式

  • 单例模式的作用
    • 可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问
    • 从而方便地控制了实例个数,并节约系统资源
  • 单例模式的使用场合
    • 在整个应用程序中,共享一份资源(这份资源只需要创建初始化1次)

简单实现

#import "Person.h"

@implementation Person

static Person *_person;

//使用这方法是因为alloc内部也会调用这个方法 这个方法是分配内存地址的
+(instancetype)allocWithZone:(struct _NSZone *)zone{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _person = [super allocWithZone:zone];
    });
    return _person;
}

//方便使用
+ (instancetype)sharedPerson{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _person = [[self alloc] init];
    });
    return _person;
}

//为了防止copy的时候 copy出了新的对象
- (id)copyWithZone:(NSZone *)zone
{
    return _person;
}

@end

results matching ""

    No results matching ""