CGFloat是否是一类,不是吗?

问题描述 投票:1回答:3

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

CGFloat *point;
int count;
CGFloat vectorScale;

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

iphone objective-c core-graphics cgfloat
3个回答
4
投票

CGFloat只是用于float的C typedef或取决于您平台的double。在现代机器上,可能是它的两倍。这意味着* point作为指向浮点数的指针。给定该名称后,它可能是(有根据的猜测)指向x y坐标的交织数组的指针。


2
投票

这不是一堂课。在iOS上,它是float。在osx上,它是floatdouble

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


2
投票

如果您想知道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,取决于您所在的位置。

© www.soinside.com 2019 - 2024. All rights reserved.