Differenz s / w Objektive C's selbst und C ++ ist das?

8

kann jemand den Unterschied zwischen objective C's selbst und C ++ diesen Zeiger sagen?

    
Krishnan 28.09.2010, 08:08
quelle

2 Antworten

21

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:

  • so dass Unterklassen (die Initialisierer der Kette mit self = nil ) sehen können, wenn die Initialisierung fehlschlägt und wissen, dass sie nicht in ihren eigenen Initialisierern weitermachen sollen.
  • Zusammensetzende Objekte können den Fehler erkennen und wissen, dass sie keine gültige Komponente haben.

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>     

user23743 28.09.2010, 08:35
quelle
5

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.

    
JeremyP 28.09.2010 08:30
quelle

Tags und Links