/ / Warum ist es eine schlechte Praxis, die Punktnotation für "Nebenwirkungen" zu verwenden?

Warum ist es schlecht, Punktnotation für "Nebenwirkungen" zu verwenden? - Ziel-C, Kakao-Touch

Ich bin in Kapitel 13 der iOS-Programmierung von Big Nerd Ranch und für mein Leben verstehe ich nicht, warum ich dies verwenden möchte [self becomeFirstResponder]; eher, als self.becomeFirstResponder;

Wenn ich es auf die zweite Art tippe, self.becomeFirstResponder;Ich bekomme eine Warnung "Property Access result ungenutzt - Getter sollten nicht für Nebenwirkungen verwendet werden" Es funktioniert immer noch wie vorgesehen, aber warum in aller Welt würde ich Klammern verwenden, wenn ich Punktnotation einfacher finde.

Meine Frage: Was sind diese Nebenwirkungen, die durch die Verwendung der Punktnotation auf diese Weise auftreten könnten?

Antworten:

1 für die Antwort № 1

becomeFirstResponder ist keine Eigenschaft, sondern eine Methode UIResponser.

Sie behandeln es jedoch als eine Eigenschaft, indem Sie die Punktnotation verwenden und den Rückgabewert ignorieren, weshalb Sie die Warnung erhalten.


4 für die Antwort № 2

Sie stellen die falsche Frage: Die Nebenwirkung ist das, was Sie wollen - das ist es self wird Ersthelfer. Das ist der Nebeneffekt auf jeden Fall wird auftreten.

Der Punkt, den der Compiler macht, ist dieser PunktNotation sollte nicht absichtlich verwendet werden, um diese Nebenwirkungen auszulösen. Wahrscheinlich ist es teilweise so, dass der Compiler einen Aufruf an den Getter oder den Setter (oder an beide) durch den Kontext der Verwendung der Punktnotation abhängt Der Compiler möchte möglicherweise Annahmen über den Erhalt eines Ergebnisses treffen, wenn er aufgefordert wird, einen Getter aufzurufen, und teilweise, dass Ihr Code nur falsch aussieht und daher für einen Menschen falsch gelesen wird.


0 für die Antwort № 3

Ich bin mir nicht sicher. Möglicherweise kann der Compiler Ihre "s weglassen self.becomeFirstResponder; mit hohem Optimierungsgrad, da Sie kein Eigenschaftsergebnis verwenden.