Является ли CGFloat классом и нет? - PullRequest
0 голосов
/ 08 сентября 2011

Вот некоторые переменные экземпляра в заголовочном файле из книги по разработке игр для iphone:

CGFloat *point;
int count;
CGFloat vectorScale;

Теперь я совершенно запутался.Что это за звездочка перед точкой ивара?Является ли CGFLoat классом, а не классом?

Ответы [ 3 ]

3 голосов
/ 08 сентября 2011

CGFloat - это просто C typedef для float или double в зависимости от вашей платформы.На современных машинах это, вероятно, двойной.Это означает, что * указывает как указатель на число с плавающей точкой.Учитывая это имя, это, вероятно (образованное предположение) указатель на чередующийся массив координат xy.

1 голос
/ 08 сентября 2011

Если вы хотите узнать, что из этого есть в 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 это никогда не класс: -)

1 голос
/ 08 сентября 2011

это не класс. на iOS это float. на OSX это float или double.

звездочка говорит, что point является указателем на CGFloat. вводная книга на С объяснит указатели.

...