目标C的数据类型

时间:2010-09-12 12:25:34

标签: objective-c

您建议使用什么Objective-C数据类型来存储以下内容:

位置 - 屏幕上物体的位置
方向 - 对象的方向
速度 - 嗯,物体的速度
Bounds - 允许对象的允许范围。

谢谢!

的Björn

3 个答案:

答案 0 :(得分:2)

Objective-C是C的超集。对于这些类型的东西,你通常会使用C结构,尽管你也可以将它们作为对象的字段。

如果你的问题实际上是关于 Cocoa 中的预定义类型,那么根据特定版本(即平台 - Mac OS,iOS或我猜想可能是GNUStep)和特定用途有选项。

对于基本的2D东西,对于位置,方向和速度,最简单的选择可能是CGPoint(假设速度是与方向不同的向量;否则只使用double)和{{1对于边界。

(可以说,对于非位置向量使用CGRect是一种边缘语义滥用,但我认为没有理由那么挑剔。)

答案 1 :(得分:0)

对于几乎所有这些东西都有本机或库(基础类)类型/结构,除非我遗漏了某些东西,NSPoint和NSRect几乎可以覆盖你想要的任何东西(区域,向量,点)。它们可能不是“Objective-C”数据类型,但可以在库中找到。

答案 2 :(得分:0)

CoreLocation将CLLocation用于除边界和面向之外的所有内容。但是,除非您使用lat / long作为坐标系并希望与CoreLocation GPS功能集成,否则我不建议使用它。

还有其他设计考虑因素。您希望对象的位置相对于其边界框还是全局坐标?您是否需要将面向方向与速度方向分开存储?你需要高分辨率(这意味着浮动)还是你需要更快的计算(让你倾向于整数)?您需要将其保存在CoreData数据库中吗? (NSManagedObject派生的对象而不是结构。)

我打算说要使用你将要使用的第三方库的结构(UIKit,Cocos2d,OpenGL或CoreLocation),但后来我想,“为什么在你可以添加方法时限制自己 - (CLLocationCoordinate2D)coreLocationCoordinate到你的对象。“

我建议您创建自己的结构或对象。