在ARC模式下 單例
主要重寫 兩個(gè)方法
- (instancetype)allocWithZone:(struct _NSZone *)zone
- (id)copyWithZone:(NSZone *)zone
示例代碼
@implementation Person
static id instance;
//重寫allocWithZone分配內(nèi)存的方法,保證該方法永遠(yuǎn)只會(huì)被執(zhí)行一次
+(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函數(shù)
-(id)copyWithZone:(NSZone *)zone {
return instance;
}
二 MRC下面還需要多加下面的幾個(gè)方法
-(oneway void)release {}
-(instancetype)retain{
return instance;
}
-(NSUInteger)retainCount{
return 1;
}
-(instancetype)autorelease {
return instance;
}