2010-09-12 2 views
0

Что тип данных Objective-C вы бы рекомендовали хранить следующие:Datatypes для Objective C

Положение - Положение для объекта на экране
направление - направление объекта
Velocity - Ну, скорость объекта
Границы - разрешенные границы для объекта, где разрешено находиться.

Спасибо!

Бьорн

+0

Могут ли структуры C сделать трюк? Я не верю, что существуют формальные цели-c-классы для таких ситуаций. Кроме того, вы говорите о 2D или 3D-средах? Это может повлиять на структуры, которые вы используете. –

+0

C Структуры могут быть тем, что я ищу. В этом случае это 2D. –

ответ

2

Objective-C является подмножеством С. Для этого рода вещей, которые вы обычно используете C структуры, хотя вы можете сделать их в качестве альтернативы поле объекта.

Если ваш вопрос на самом деле о предопределенных типов в какао, то есть варианты, в зависимости от конкретной версии (то есть, платформа - Mac OS, IOS или я предполагаю, что, предположительно, GNUStep) и конкретной цели.

Для базового 2D материала, самый простой выбор, вероятно, будет CGPoint для положения, направления движения и скорости (при условии, скорость является векторной величиной отличается от направления, в противном случае просто использовать double) и CGRect за пределы поля.

(Возможно, это предельная смысловая злоупотребление использовать CGPoint для векторов, не позиционных, но я не вижу причин, чтобы быть, что разборчивы.)

+0

GCPoint был именно тем, что я искал! Моя платформа iOS, поэтому я не могу использовать NSPoint. –

0

Есть родные или библиотеки (классы Foundation) Типы/Структуры для почти любой из этих вещей, если я что-то не хватает, NSPoint и NSRect могут покрывать почти все, что вы хотите (области, векторы, точки). Они не могут быть типами Objective-C, но доступны в Библиотеке.

0

В основе CoreLocation используется CLLocation для всех, кроме ограничивающих и обращенных. Однако я бы не предложил использовать его, если вы не используете lat/long для вашей системы координат и хотите интегрироваться с функциональностью CoreLocation GPS.

Есть другие соображения дизайна. Вы хотите, чтобы местоположение объекта было относительно его ограничивающего прямоугольника или в глобальных координатах? Вам нужно хранить направленное направление отдельно от направления скорости? Вам нужно высокое разрешение (что означает «поплавки»), или вам нужно более быстрое вычисление (которое опирается на целые числа)? Вам нужно сохранить его в базе данных CoreData? (Объект, основанный на NSManagedObject, вместо структур).

Я собирался сказать, что использовать структуры сторонней библиотеки, которую вы собираетесь использовать (UIKit, Cocos2d, OpenGL или CoreLocation), но потом я подумал: «зачем ограничивать себя, когда вы можете добавлять такие объекты, как - (CLLocationCoordinate2D) coreLocationCoordinate к вашему объекту».

Я предлагаю создать вашу собственную структуру или объект.