您建议使用什么Objective-C数据类型来存储以下内容:
位置 - 屏幕上物体的位置
方向 - 对象的方向
速度 - 嗯,物体的速度
Bounds - 允许对象的允许范围。
谢谢!
的Björn
答案 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到你的对象。“
我建议您创建自己的结构或对象。