iOS开发之单例模式下的初始化方法
一般的单例我们会这么写
+(instancetype)sharedXXXManager{
static XXXManager *sharedXXXManagerInstance = nil;
static dispatch_once_t predicate;
dispatch_once(&predicate,^{
sharedXXXManagerInstance = [[XXXManager alloc] initPrivate];
});
return sharedXXXInstance;
}
在这里一般我们会用一个私有的初始化方法,在这里调用父类的指定初始化方法。
- (instancetype)initPrivate{
self = [super init];
if (self) {
//init
}
return self;
}
而为了防止调用该类的人使用init方法,可以覆盖init方法并抛出异常以提醒他该是一个单例。
-(instancetype)init{
@throw [NSException exceptionWithName:@"Singleton" reason:@"Use +[XXXManager sharedXXXManager]" userInfo:nil];
nil;
}
时间: 2024-12-27 22:45:51