欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IOS 标准单例

程序员文章站 2022-07-13 23:47:36
...

在ARC模式下 单例
主要重写 两个方法

  • (instancetype)allocWithZone:(struct _NSZone *)zone
  • (id)copyWithZone:(NSZone *)zone
    示例代码
    @implementation Person
    static id instance;

//重写allocWithZone分配内存的方法,保证该方法永远只会被执行一次
+(instancetype)allocWithZone:(struct _NSZone *)zone {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [super allocWithZone:zone];
});
return instance;
}

//自定义单列方法
+(instancetype)sharedPerson {

static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    instance = [Person new];
});
return instance;

}

//重写copyWithZone函数
-(id)copyWithZone:(NSZone *)zone {
return instance;
}


二 MRC下面还需要多加下面的几个方法

-(oneway void)release {}

-(instancetype)retain{
return instance;
}

-(NSUInteger)retainCount{
return 1;
}
-(instancetype)autorelease {
return instance;
}