5

我计划定义一个类,它的属性中包含 x/y 网格的坐标。但是,我不确定实现此设计的“最佳”方式。这是一个非常简单的问题,我只想正确地做并且有理由!

一种解决方案是在int对象中拥有两个类型为“ ”的属性,一个用于 x,一个用于 y。

另一种是定义一个包含 x/y 值的两个整数的 typedef 结构并命名它<ClassPrefix>Coordinate。类似于CGSize?

有没有其他/更好的方法来做到这一点?哪个是首选?不知道如何证明任何一种方式。

谢谢!

蒂姆。

4

3 回答 3

11

“哪个是首选?”的答案 问题取决于几个因素:

  • 您打算创建多少这样的项目?- 如果答案是“百万”,则struct获胜;如果答案是“五十八”,则对象获胜。
  • 你需要在上面定义方法吗?- 如果答案是“是”,则对象获胜;否则,struct可能没问题。
  • 你打算定义它的数组吗?- 如果答案是“是”,struct可能是更好的选择。
  • 您是否需要经常创建和销毁它?- 如果答案是“是”,struct可能是更好的选择。

最终,您的设计约束帮助您确定什么是最好的;没有普遍“更好”的数据结构。

于 2013-03-12T10:43:02.153 回答
4

除了@dasblinkenlight 的回答,我会给你一些决策建议:

  • 创建后结构是不可变的吗?
    使用一个对象。

  • 该结构是否拥有(= 保留)指向其他对象或数组(C 数组或 C 数组)的指针NSArray?它是否与对象交互(= 具有带有对象参数的方法)?
    然后使用一个对象。

  • 该结构是否仅包含原始类型(int, float, otherstruct等)并且仅与其他原始类型/结构交互?
    然后使用structwith 函数。

于 2013-03-12T10:58:24.493 回答
1

这是一种权衡。

一个类和它的实例会消耗更多的资源,尤其是当你必须制作很多它们的时候。如果没有这么多的实例,那不是问题。

结构更快但很难扩展,最不方便的是结构不能保存对象或方法。

对于您的示例,如果您仅将其用于坐标,我建议您使用 struct. 但这取决于您的设计和代码。没有绝对的判断哪个是最好的。

于 2013-03-12T10:45:29.573 回答