Удачи,
Мне нравится строгий ввод в C. Поэтому я не хочу хранить 2D вектор плаваний, если мне конкретно нужны целые числа. Есть ли обеспеченный Apple эквивалент CGPoint
который хранит данные как целые числа?
Я реализовал свой тип Vector2i
и его сопутствующая функция Vector2iMake()
а-ля CGPoint, но что-то глубоко во мне крики, которыми Apple уже была там.
Обновление для объяснения.
Мне нужен тип данных, который сохранит координаты в настольной игре. Это совершенно определенно целые числа. То же было бы то, если бы я должен был реализовать основанную на мозаике основанную на повороте стратегию или основанный на мозаике RPG.
Если вы представляете свое игровое поле в виде объектов, хранящихся в неразреженных вложенных массивах, тогда вы может захотеть рассмотреть создание подкласса NSIndexPath или его прямое использование.
Из ссылки на класс:
Класс NSIndexPath представляет путь к определенному узлу в дереве вложенных коллекций массивов. Этот путь известен как индексный путь.
Каждый индекс в пути индекса представляет индекс в массиве дочерних узлов от одного узла дерева к другому, более глубокому узлу.
Согласно Руководству по программированию приложений iPhone, все предоставленные точки являются плавающими. И когда вы используете их для работы с экраном (в конечном итоге ожидая целых чисел), вам в любом случае следует использовать числа с плавающей запятой для независимости от разрешения экрана и т. Д.
(чтобы прямо ответить на вопрос ...)
Я не знаю "NSIntegerPoint", но сделать его будет несложно:
struct NSIntegerPoint {
NSInteger x;
NSInteger y;
};
Наряду с такими вещами, как:
CG_INLINE NSIntegerPoint
NSIntegerPointMake(NSInteger x, NSInteger y)
{
NSIntegerPoint p; p.x = x; p.y = y; return p;
}
CG_INLINE bool
__NSIntegerPointEqualToPoint(NSIntegerPoint point1, NSIntegerPoint point2)
{
return point1.x == point2.x && point1.y == point2.y;
}
#define NSIntegerPointEqualToPoint __NSIntegerPointEqualToPoint