Domanda

Ecco alcune variabili di istanza in un file di intestazione da un libro di sviluppo del gioco per iPhone:

CGFloat *point;
int count;
CGFloat vectorScale;

Ora sono assoluto confuso. Cos'è quell'asterisco prima del punto Ivar? CGFloat è una classe e non lo è?

È stato utile?

Soluzione

Un cgfloat è solo un c da typedef per float o un doppio a seconda della piattaforma. Sulle macchine moderne è probabilmente un doppio. Ciò significa che *punta come puntatore a un galleggiante. Dato quel nome, è probabilmente (ipotesi istruita) un puntatore a un array interleate di coordinate XY.

Altri suggerimenti

Non è una classe. su iOS, è un float. su OSX, lo è float o double.

L'asterisco lo dice point è un puntatore a a CGFloat. Un libro C introduttivo spiegherà i puntatori.

Se vuoi sapere quale di queste cose è in Xcode, fai clic su opzione sul tipo. Sarai portato alla sua definizione effettiva. Quello che ottengo è:

#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 Non è mai una classe :-)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top