¿CGFloat es una clase y no?
-
27-10-2019 - |
Pregunta
Aquí hay algunas variables de instancia en un archivo de encabezado de un libro de desarrollo del juego de iPhone:
CGFloat *point;
int count;
CGFloat vectorScale;
Ahora estoy absolutamente confundido. ¿Qué es ese asterisco antes del punto Ivar? ¿Es CGFloat una clase tan bien?
Solución
Un CGFloat es solo un tipEdef C para flotador o un doble dependiendo de su plataforma. En las máquinas modernas es probablemente un doble. Esto significa que *apunta como un puntero a un flotador. Dado ese nombre, es probablemente (suposición educada) un puntero a una matriz entrelazada de coordenadas XY.
Otros consejos
No es una clase. En iOS, es un float
. En OSX, es float
o double
.
El asterisco dice que point
es un puntero a un CGFloat
. Un libro de introductorio C explicará consejos.
Si desea saber qué es una de estas cosas en Xcode, haga clic en la opción en el tipo. Te llevarán a su definición real. Lo que obtengo es:
#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 nunca es una clase :-)