CGFloat既是一个类而不是?

时间:2011-09-08 05:56:48

标签: iphone objective-c core-graphics cgfloat

以下是来自iphone游戏开发书的头文件中的一些实例变量:

CGFloat *point;
int count;
CGFloat vectorScale;

现在我绝对糊涂了。在点ivar之前那个星号是什么? CGFLoat是一类还是不是?

3 个答案:

答案 0 :(得分:3)

CGFloat只是一个C typedef for float或double,具体取决于你的平台。在现代机器上它可能是双倍的。这意味着*指向浮点数的指针。鉴于该名称,它可能(有根据的猜测)指向x y坐标的交错数组。

答案 1 :(得分:1)

这不是一个班级。在iOS上,它是float。在osx上,它是floatdouble

星号表示point是指向CGFloat的指针。一本介绍性的C书将解释指针。

答案 2 :(得分:1)

如果您想知道Xcode中有哪些内容,请选择该类型。您将被视为其实际定义。我得到的是:

#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它从来不是一个类: - )