Фреймворк Какао имеет соглашение всегда вызывать self = [super init]
в методе init
унаследованного класса, потому что [super init ]
может вернуть новый экземпляр.
Что произойдет, если я сделаю это?
@interface MyClass : NSObject /* or any other class */ {
int ivar_;
}
@end
@implementation MyClass
- (id)init {
ivar_ = 12345;
if ((self = [super init])) {
NSLog(@"ivar_'s value is %d", ivar_);
}
return self;
}
@end
В случае, когда [super init]
вернет новый экземпляр, что я увижу в консоли ? Значение ivar_ равно 0
?
Я не могу придумать способ проверить это сам, потому что не знаю не знаю, какой класс может вернуть новый экземпляр из своего метода init
. Кроме того, похоже, что я не могу найти явных разъяснений для этого сценария в документации.
Может ли кто-нибудь мне помочь? Спасибо!