1.在重写了allocWithZone方法后,归档前后是同一个对象,否则不是,解档回调用allocWithZone:方法
+ (instancetype)sharedSingleton {
static BaseModel *_sharedSingleton = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
//不能再使用alloc方法
//因为已经重写了allocWithZone方法,所以这里要调用父类的分配空间的方法
_sharedSingleton = [[super allocWithZone:NULL] init];
});
return _sharedSingleton;
}
+ (instancetype)allocWithZone:(struct _NSZone *)zone{
return [BaseModel sharedSingleton];
}
网友评论