1

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

CGFloat *point;
int count;
CGFloat vectorScale;

现在我很困惑。点 ivar 之前的星号是什么?CGFLoat 是一个类还是不是?

4

3 回答 3

4

CGFloat 只是浮动或双精度的 C 类型定义,具体取决于您的平台。在现代机器上,它可能是双倍的。这意味着 *point 作为指向浮点数的指针。给定这个名字,它可能(有根据的猜测)是一个指向 xy 坐标交错数组的指针。

于 2011-09-08T06:03:41.357 回答
2

这不是一堂课。在 iOS 上,它是一个float. 在 osx 上,它是floator double

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

于 2011-09-08T06:04:34.867 回答
2

如果您想知道 Xcode 中的其中一项是什么,请在类型上单击选项。您将获得“跳转到定义”选项。

在斯威夫特:

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 它似乎还不是一个类,但它是一个结构、浮点或双精度,这取决于你在哪里。

于 2011-09-08T06:11:58.307 回答