![]() |
[objective c] Wozu * bei Objektdefinition?
Hallo,
ich beschäftige mich zur Zeit mit Objective C. Wenn man einen allgemeinen Platzhalter für Objekte definiert, geht das ja z.B. so:
Code:
Das habe ich verstanden. Es wird der Klasse NSNumer die Nachricht numerWithFloat geschickt und das entstehende Objekt mit dem Wert 3.14 initialisiert. Dieses Objekt wird dann myNumber zugewiesen.
id myNumer;
myNumber = [NSNumber numberWithFloat: 3.14]; Wenn ich aber nicht mit Platzhaltern arbeite, dann sieht das ja so aus:
Code:
Warum ist dabei der * nötig? :gruebel:
NSNumber *myNumber = [NSNumber numberWithFloat: 3.14];
|
Re: [objective c] Wozu * bei Objektdefinition?
Pointer?
|
Re: [objective c] Wozu * bei Objektdefinition?
Naja, von der Notation habe ich auch an Pointer gedacht, aber ich greife ja anschließend z.B. mit:
Code:
auf myNumber zu. Dort sieht es ja nicht mehr nach Pointer aus.
printf("Der Float Wert: %f\n", [myNumber floatValue]);
|
Re: [objective c] Wozu * bei Objektdefinition?
Der Stern gibt an, dass es sich bei der Variable ab sofort um ein bestimmtes Objekt handelt und gleichzeitig wird der Construktor aufgerufen. Also so ähnlich wie Obj = new Klasse
Bernhard |
Re: [objective c] Wozu * bei Objektdefinition?
Hallo Bernhard,
ok danke, das macht Sinn. Ich finde die Notation nur nicht ganz eingängig. Ich hätte genau das, was du schreibst eher ohne diesen Stern erwartet:
Code:
Aber ok, so ist es hat bei NextStep gewesen. :stupid:
NSNumber myNumber = [NSNumber numberWithFloat: 3.14]; // Falscher Code da * fehlt
|
Re: [objective c] Wozu * bei Objektdefinition?
Zitat:
Ich habe mal kurz die Einleitung überflogen: Zitat:
Wohl lieber zum Gehstock als zum rollstuhl greifen, würde ich sagen :P . |
Re: [objective c] Wozu * bei Objektdefinition?
Zitat:
Delphi-Quellcode:
pMyInt: ^Integer;
pMyInt^ := 7; Writeln(pMyInt^); Zitat:
|
Re: [objective c] Wozu * bei Objektdefinition?
Zitat:
Delphi-Quellcode:
Gut, Delphi versteckt die Tatsache, dass man es hier überhaupt mit einem Pointer zu tun hat, aber das ist ja nur eine kleine syntaktische Abweichung. Wichtig ist, dass in Delphi/Objective-C/Java/C#/... Objekte immer über Referenzen angesprochen werden und dabei nicht dereferenziert werden müssen oder überhaupt können.
myNumber := TNumber.Create;
myNumber.FloatValue; // automatische Dereferenzierung |
Re: [objective c] Wozu * bei Objektdefinition?
Zitat:
Ich habe es aber jetzt verstanden und muss es mir einfach merken. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz