Я из мира С++, поэтому понятие присваивания this
заставляет меня дрожать:
this = new Object; // Gah!
Но в Objective-C имеется аналогичное ключевое слово self
, для которого это вполне приемлемо:
self = [super init]; // wait, what?
Много примеров кода Objective-C использует указанную выше строку в подпрограммах init
. Мои вопросы:
1) Почему назначение self
имеет смысл (ответы вроде "потому что язык позволяет это" не считать)
2) Что произойдет, если я не назначу self
в моей подпрограмме init
? Я помещаю свой пример в какую-то угрозу?
3) Когда следующий оператор if
выходит из строя, что это значит и что мне нужно сделать, чтобы восстановить его:
- (id) init
{
self = [super init];
if (self)
{
self.my_foo = 42;
}
return self;
}