Ich denke, in den meisten Klassen funktioniert Ihre App im Grunde immer noch nicht richtig, wenn der Rückgabewert von [super init] Null ist und Sie ihn überprüfen, wie von den Standardpraktiken empfohlen, und dann vorzeitig zurückgeben, wenn Null, dass Ihre App im Grunde immer noch nicht richtig funktioniert. Wenn man darüber nachdenkt, obwohl , dass , wenn (selbst! = Nil) Überprüfung ist es, für den ordnungsgemäßen Betrieb der Klasse, 99,99% der Zeit , die Sie tatsächlich tun müssen selbst Nicht-Null zu sein. Nehmen wir nun an, aus welchem Grund auch immer, [super init] hat nil zurückgegeben. Im Grunde geht Ihr Scheck gegen nil im Grunde genommen an den Anrufer Ihrer Klasse, wo er wahrscheinlich sowieso fehlschlagen würde, da er natürlich davon ausgeht, dass der Anruf war erfolgreich.
Grundsätzlich geht es mir darum, dass das if (self! = Nil) in 99,99% der Fälle nichts im Hinblick auf eine größere Robustheit kauft, da Sie nur das Geld an Ihren Anrufer weitergeben. Um dies wirklich robust handhaben zu können, müssten Sie tatsächlich Überprüfungen in Ihrer gesamten aufrufenden Hierarchie vornehmen. Und selbst dann würde es Ihnen nur kaufen, wenn Ihre App etwas sauberer / robuster ausfällt. Aber es würde immer noch scheitern.
Wenn eine Bibliotheksklasse aufgrund eines [Super-Init] willkürlich beschlossen hat, Null zurückzugeben, sind Sie sowieso ziemlich verärgert, und dies ist eher ein Hinweis darauf, dass der Verfasser der Bibliotheksklasse einen Fehler bei der Implementierung gemacht hat.
Ich denke, dies ist eher ein Legacy-Codierungsvorschlag, wenn Apps in einem viel begrenzteren Speicher ausgeführt wurden.
Aber für Code auf C-Ebene würde ich normalerweise immer noch den Rückgabewert von malloc () gegen einen NULL-Zeiger prüfen. Während ich für Objective-C, bis ich Beweise für das Gegenteil finde, im Allgemeinen die if (self! = Nil) -Prüfungen überspringe. Warum die Diskrepanz?
Denn auf der C- und Malloc-Ebene können Sie sich in einigen Fällen tatsächlich teilweise erholen. Während ich in Objective-C denke, dass in 99,99% der Fälle, wenn [super init] null zurückgibt, Sie im Grunde genommen gefickt sind, selbst wenn Sie versuchen, damit umzugehen. Sie können die App auch einfach abstürzen lassen und sich mit den Folgen befassen.