2012-04-02 9 views

Odpowiedz

8

Technicznie nie. documentation for -[NSObject init] mówi, że

Sposób init zdefiniowane w klasie NSObject robi żadnej inicjalizacji; po prostu zwraca self.

Bo to jest udokumentowane i nie ma chyba już grono kodu, który polega na tym, że faktem jest, wysoce raczej się nie zmieni w przyszłych wersjach systemu Mac OS X.

Edit:BoltClock's a Unicorn przynosi do punktu, który chciałbym uczynić bardziej hiperbolicznym: całkowity czas zaoszczędzony przez niewywołanie -[NSObject init] dla każdego, kto kiedykolwiek uruchomił twój program, nigdy nie przekroczy czasu debugowania, który ponosisz, jeśli kiedykolwiek zmienisz klasę nadrzędną dla twojej klasy na coś inny niż NSObject i zapomnij dodać połączenie pod numer [super init].

4

Z documentation, to nie wydaje się, aby wykonywać żadnej inicjalizacji w ogóle:

Sposób init zdefiniowane w klasie NSObject robi żadnej inicjalizacji; po prostu zwraca self.

Przypuszczam byłoby nieszkodliwe nie zadzwonić [super init], ale nie ma powodu, aby nie podążać konwencje i, wiesz, nazywają go w swojej podklasy tak. Na przykład Twoja podklasa może w przyszłości dziedziczyć po innej klasie, która może zawierać logikę inicjalizacji w swojej własnej metodzie -init, którą będzie wymagać twoja podklasa.

0

Po prostu zadzwoń przez jeden z inicjatorów oznaczonych super w swojej implementacji, ponieważ powinieneś zrobić to, co jest jasne i poprawne.

Powiązane problemy