Использовать CGFloat вместо float? Они этого не делают - PullRequest
4 голосов
/ 09 июля 2010

[Возможно, я неправильно понял всю эту тему, так как я вырос на языках, которые позволяют разработчику почти полностью игнорировать архитектуру процессора, такую ​​как Java, за исключением некоторых особых случаев. Пожалуйста, поправьте меня, если я ошибаюсь в некоторых понятиях. ]

Чтение здесь кажется, что совет состоит в том, чтобы использовать CGFloat вместо, скажем, float, потому что это защищает мой код для будущих процессорных архитектур (в будущем 64-битные дескрипторы плавают по-разному) Если предположить, что это правильно, то почему UISlider, например, использует float напрямую (для значения)? Не было бы неправильно (или что-то) для меня прочитать их float и преобразовать их в CGFloat, потому что в любом случае мой код неверен, если архитектура все равно изменится?

Ответы [ 2 ]

6 голосов
/ 09 июля 2010

CGFloat - это просто typedef для float.Это обеспечивает гибкость для CGFloat, чтобы быть чем-то другим в будущем.Вот почему его использование гарантирует ваш код на будущее.Objective-C делает это со многими типами, NSInteger является другим примером.

Хотя они могут использоваться взаимозаменяемо, я согласен, что в случае UISlider не кажется, что Apple была dogfooding .

2 голосов
/ 01 июня 2011

CGFloat является частью Core Graphics и используется для таких вещей, как значения пикселей, которые сильно изменились за эти годы (кто-нибудь здесь любитель TRS-80?). Поэтому рекомендуется использовать CGFloat для отображения значений чертежа.

Значение слайдера не связано с графикой. Это просто от 0.0 до 1.0, который может быть обработан точно с помощью float, и, вероятно, 16-битный с плавающей точкой.

...