这是来自iPhone游戏开发书的头文件中的一些实例变量:
CGFloat *point;
int count;
CGFloat vectorScale;
现在我很困惑。 ivar点之前的星号是什么? CGFLoat是一个类,不是吗?
CGFloat只是用于float的C typedef或取决于您平台的double。在现代机器上,可能是它的两倍。这意味着* point作为指向浮点数的指针。给定该名称后,它可能是(有根据的猜测)指向x y坐标的交织数组的指针。
这不是一堂课。在iOS上,它是float
。在osx上,它是float
或double
。
星号表示point
是指向CGFloat
的指针。一本介绍性的C书将解释指针。
如果您想知道Xcode中其中之一是什么,请在类型上单击鼠标右键。您将获得“跳转到定义”选项。
在Swift中:
public struct CGFloat {
...
(包含在核心图形中)
您的问题中,您在目标C中:
#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似乎还不是一个类yet,但是它是一个struct,float或double,取决于您所在的位置。