CGFloat est à la fois une classe et non?
-
27-10-2019 - |
Question
Voici quelques variables d'instance dans un fichier d'en-tête d'un livre de develpment jeu iphone:
CGFloat *point;
int count;
CGFloat vectorScale;
Maintenant, je suis absolutaley confus. Qu'est-ce que le point astérisque avant Ivar? Est-CGFLoat une classe aussi bien que ce n'est pas?
La solution
A CGFloat est juste un typedef C pour flotteur ou double en fonction de votre plate-forme. Sur les machines modernes est probablement un double. Cela signifie que le point * comme un pointeur sur un flotteur. Compte tenu de ce nom, sa (supposition) probablement un pointeur vers un tableau entrelacée de coordonnées x y.
Autres conseils
ce n'est pas une classe. sur iOS, il est un float
. sur osx, il est float
ou double
.
l'astérisque indique que point
est un pointeur vers un CGFloat
. un livre d'introduction C expliquera les pointeurs.
Si vous voulez savoir ce que l'une de ces choses est dans Xcode, option cliquez sur le type. Vous serez amené à sa définition réelle. Ce que je reçois est:
#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 il est jamais une classe: -)