Myślę, że w większości klas, jeśli wartość zwracana przez [super init] jest równa zero i sprawdzasz to, zgodnie ze standardowymi praktykami, a następnie zwracasz przedwcześnie, jeśli zero, w zasadzie Twoja aplikacja nadal nie będzie działać poprawnie. Jeśli myślisz o tym, mimo że jeśli (self! = Nil) sprawdzenie czy istnieje, do prawidłowego działania swojej klasie, 99,99% czasu faktycznie zrobić potrzebujemy siebie być non-zero. Teraz załóżmy, że, niezależnie od przyczyny, [SUPER startowych] zrobił zwrot nil, w zasadzie czek na zero jest w zasadzie przekazując złotówki do rozmówcy swojej klasie, gdzie byłoby to prawdopodobnie nie tak czy inaczej, ponieważ będzie on oczywiście założyć, że wezwanie było odnoszący sukcesy.
Zasadniczo rozumiem to, że w 99,99% przypadków if (self! = Nil) nie kupuje niczego w kategoriach większej odporności, ponieważ po prostu przekazujesz pieniądze inwokatorowi. Aby naprawdę móc sobie z tym poradzić, należałoby wprowadzić kontrole w całej hierarchii wywołań. I nawet wtedy jedyne, co by ci kupiło, to to, że twoja aplikacja zawiedzie trochę bardziej czysto / solidnie. Ale i tak by się nie udało.
Jeśli klasa biblioteki arbitralnie zdecydowała się zwrócić nil w wyniku [superinita], to i tak jesteś prawie spieprzony, a to bardziej wskazuje na to, że autor klasy biblioteki popełnił błąd implementacji.
Myślę, że jest to bardziej sugestia dotycząca starszego kodowania, gdy aplikacje działały w znacznie bardziej ograniczonej pamięci.
Ale w przypadku kodu poziomu C nadal zazwyczaj sprawdzałbym wartość zwracaną przez malloc () względem wskaźnika NULL. Natomiast w przypadku Objective-C, dopóki nie znajdę dowodów przeciwnych, myślę, że generalnie pomijam sprawdzanie if (self! = Nil). Skąd ta rozbieżność?
Ponieważ na poziomach C i Malloc w niektórych przypadkach można częściowo odzyskać zdrowie. Podczas gdy myślę, że w Objective-C, w 99,99% przypadków, jeśli [super init] zwraca zero, w zasadzie jesteś spieprzony, nawet jeśli spróbujesz sobie z tym poradzić. Równie dobrze możesz po prostu pozwolić aplikacji się zawiesić i poradzić sobie z następstwami.