W Objective-C dlaczego mam sprawdzić, czy self = [super init] nie jest zerowe?

Mam ogólne pytanie dotyczące pisania metod init w Objective-C.

Widzę to wszędzie (kod Apple'a, książki, otwarty kod źródłowy itp.), Że metoda init powinna sprawdzić, czy self = [super init] nie jest zerowe, zanim przejdziemy do inicjalizacji.

Domyślny szablon Apple dla metody init to:

- (id) init
{
    self = [super init];

    if (self != nil)
    {
        // your code here
    }

    return self;
}

Czemu?

Mam na myśli, kiedy init kiedykolwiek zwróci zero? Jeśli zadzwoniłem do init na NSObject i odzyskałem zero, to coś musi być naprawione, prawda? W takim przypadku równie dobrze możesz nawet nie napisać programu ...

Czy to naprawdę tak powszechne, że metoda init klasy może zwrócić zero? Jeśli tak, w jakim przypadku i dlaczego?

questionAnswers(9)

yourAnswerToTheQuestion