Warum werden Objektvariablen mit einem Stern deklariert?

8

Das mag als triviale Frage erscheinen.

Aber warum müssen wir beim Deklarieren von Objektvariablen

das Sternchen verwenden?

Wie machen wir

%Vor%

Was ist die Bedeutung des Sterns, ich meine der Compiler weiß bereits, dass es ein Objekt ist, ich bin mir sicher, dass der Compiler trainiert werden kann, sich nicht darüber zu beschweren. Aber dann wieder, indem ich es weglasse, erhalte ich eine Fehlermeldung "statisch zuweisen Instanz von objective-c Klasse NSObject" Welchen Zweck würde das dienen?

    
stone 15.12.2010, 19:30
quelle

5 Antworten

10

Der Stern ist ein Qualifier für die von Ihnen deklarierte Car-Variable. Es bedeutet, dass Sie einen Zeiger auf ein Auto deklarieren, anstatt ein Auto selbst zu deklarieren. Der Rückgabewert der init-Funktion (und der Alloc-Funktion für diese Angelegenheit) ist ein Zeiger auf ein Auto, nicht auf ein Auto selbst, daher ist dies korrekt.

    
Marplesoft 15.12.2010 19:33
quelle
6

Mit * deklarieren Sie einen Zeiger. Das ist wie in C, welches eine Untermenge von ObjC ist. Ohne * würde die Variable statisch zugewiesen, was für ObjC-Objekte nicht möglich ist (weil die Größe des Objekts zur Kompilierzeit nicht bestimmt werden konnte).

Statisch zugewiesene Variablen werden für primitive C-Typen wie int oder double

verwendet %Vor%     
nils 15.12.2010 20:20
quelle
4

Objective-C erfordert, dass alle Objekte dynamisch zugeordnet werden (d. h. auf dem Heap). Der Fehler, den Sie erhalten, zeigt an, dass Sie versuchen, ein Auto-Objekt auf dem Stapel zu erstellen. Indem Sie Mazda als einen Zeiger auf Auto (Car *) statt auf ein Auto deklarieren, erfüllen Sie diese Anforderung.

    
Ferruccio 15.12.2010 19:40
quelle
1

Dies ist effektiv ein Betrogen von Warum [Objekt doSomething] und nicht [* object doSomething]? , das eine Menge Hintergrundinformationen hat.

    
bbum 15.12.2010 20:59
quelle
0

Das Sternchen in der Variablendeklaration bedeutet auch, dass der Wert der Variablen keinen statischen zugewiesenen Wert hat. Es ist ein Zeiger genau wie die anderen gesagt haben.

    
Boydo 02.05.2016 05:24
quelle

Tags und Links