Um den Kommentar von @Anders zu erweitern, sieht das spezifische Problem, gegen das es dich schützt, so aus:
%Vor% 90% der Zeit ist das ein Fehler. Du wolltest sagen foo == x
. Aber in 10% der Fälle meintest du wirklich "weise x foo zu und dann teste für die Wahrheit". Der kanonische Fall ist while (ch = getchar())
. Aber das if (self = [super init])
ist ein anderes gutes Beispiel. Der Compiler nimmt an, dass solche Dinge Fehler sind, und gibt eine Warnung aus, es sei denn, Sie sagen dem Compiler, dass Sie es wirklich verstanden haben, indem Sie doppelte Klammern verwenden.
Persönlich mache ich es einfach so:
%Vor%Es ist eine zusätzliche Zeile, aber es hält die Dinge nur ein klein wenig klarer, wenn der Init-Aufruf lang ist.
Abgesehen davon hat Aaron Hillegass von der Big Nerd Ranch einige von uns herausgefordert, einen Fall aufzustellen, in dem dieser self==nil
check wirklich eine Rolle spielte. Die Fälle existieren, aber sie sind unglaublich wenige (Sie könnten self
als NSObservation
observer hinzufügen und Sie möchten nicht, dass es in diesem Fall nil
ist). Nimm es für das, was es wert ist; In meinem persönlichen Code überspringe ich oft den nil
check, aber in meinem professionellen Code ist es ein Teil des Standards meines Teams.
Als weiteres Beispiel hat Apple aus irgendeinem Grund eine zusätzliche Gcc-Option -Wmost
hinzugefügt, die diese Warnung ausschaltet. Ich nehme an, dass jemand die zusätzlichen Klammern nicht gerne eingegeben hat. Es scheint mir eine schlechte Idee zu sein, es auszuschalten.
Tags und Links objective-c