Der Hauptunterschied besteht darin, dass this
ein Schlüsselwort ist, während self
eine Variable ist. Dies führt dazu, dass% ce_de% immer auf das Objekt verweist, das eine bestimmte Methode ausführt, während die Objective-C-Methoden this
während der Ausführung ändern können. Dies wird manchmal von Konstruktoren verwendet, die self
bei einem Fehler setzen.
Die Gründe dafür sind:
self = nil
) sehen können, wenn die Initialisierung fehlschlägt und wissen, dass sie nicht in ihren eigenen Initialisierern weitermachen sollen. Einige Initialisierer setzen self = [super init]
auf ein anderes, aber gültiges Objekt. Dies kann in Klassenclustern verwendet werden, in denen die Klasse "abstract" beim Erstellen des initialisierten Objekts eine temporäre Instanz generieren kann, aber letztendlich ein anderes Objekt basierend auf den Eigenschaften zurückgibt, die während der Konstruktion erstellt wurden.
Außerdem bedeutet das, dass Sie die üblichen Dinge mit Variablennamen tun können, die alle verwirren, die Sie nicht mit Schlüsselwörtern tun können, z. B. eine lokalere Variable mit demselben Namen self
in einem Codeblock definieren / p>
Ja. Einer ist buchstabiert s-e-l-f. Der andere wird t-h-i-s geschrieben.
Weniger witzig:
self
wird in Objective-C-Klassen verwendet, um einen Zeiger auf die aktuelle Instanz darzustellen.
this
wird in C ++ - Klassen verwendet, um einen Zeiger auf die aktuelle Instanz darzustellen.
Sie führen analoge Rollen durch, aber auf völlig verschiedenen Strukturen.
Tags und Links objective-c c++