Назначение себя в Objective-C

Я из мира C ++, поэтому понятие присвоения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;
}

Ответы на вопрос(6)

Ваш ответ на вопрос