如何覆盖init方法返回其他类?喜欢这个
ClassA.m
- (id)initWithType:(int)type{
if(type == 0){
return [[ClassB alloc] init];
}
else if(type == 1){
return [[ClassC alloc] init];
}
return [self init];
}
id classInstance = [[ClassA alloc] initWithType:someType];
那么,在ARC中,我是否应该关心ClassA的alloc操作?
而且,在NonARC中,有什么区别?
BTW,使用类方法实现不在讨论中,我只关心如何重写init方法返回其他类?答案 0 :(得分:0)
使用ARC,您的代码看起来很好。对于非ARC,您需要发布self
- (id)initWithType:(int)type{
if(type == 0){
[self release]; self = nil;
return [[ClassB alloc] init];
}
else if(type == 1){
[self release]; self = nil;
return [[ClassC alloc] init];
}
return [self init];
}