Frage

Hier finden Sie einige Instanzvariablen in einer Header -Datei aus einem iPhone -Game -Develpment -Buch:

CGFloat *point;
int count;
CGFloat vectorScale;

Jetzt bin ich absolut verwirrt. Was ist das für ein Sternchen vor dem Punkt Ivar? Ist CGFloat eine Klasse so gut wie nicht?

War es hilfreich?

Lösung

Ein CGFloat ist nur ein C -Typedef für Float oder ein Doppel, abhängig von Ihrer Plattform. Auf modernen Maschinen ist es wahrscheinlich ein Doppel. Dies bedeutet, dass *als Zeiger auf einen Schwimmer verweist. Angesichts dieses Namens ist es wahrscheinlich (gebildete Vermutung) ein Zeiger auf ein verschachteltes Array von XY -Koordinaten.

Andere Tipps

Es ist keine Klasse. Auf iOS ist es ein float. Unter OSX ist es float oder double.

Das Sternchen sagt das point ist ein Zeiger auf a CGFloat. Ein Einführungsbuch wird Zeiger erklären.

Wenn Sie wissen möchten, was eines davon in Xcode ist, klicken Sie auf den Typ. Sie werden zu seiner tatsächlichen Definition gebracht. Was ich bekomme ist:

#if defined(__LP64__) && __LP64__
# define CGFLOAT_TYPE double
# define CGFLOAT_IS_DOUBLE 1
# define CGFLOAT_MIN DBL_MIN
# define CGFLOAT_MAX DBL_MAX
#else /* !defined(__LP64__) || !__LP64__ */
# define CGFLOAT_TYPE float
# define CGFLOAT_IS_DOUBLE 0
# define CGFLOAT_MIN FLT_MIN
# define CGFLOAT_MAX FLT_MAX
#endif /* !defined(__LP64__) || !__LP64__ */

typedef CGFLOAT_TYPE CGFloat;
#define CGFLOAT_DEFINED 1

TL: DR Es ist nie eine Klasse :-)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top