your code looks fine with ARC. for non-ARC, you need to release 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];
}