IOS 标准单例

2016-08-07  本文已影响40人  dicesc

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

//重写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;
}

上一篇 下一篇

猜你喜欢

热点阅读