typedef struct vs. Object – 好处

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

一种解决方案是在对象内具有两个属性,类型为’ int ‘,一个用于x,一个用于y。

另一个是定义包含x / y值的两个int的typedef结构,并将其命名为Coordinate 。 与CGSize相似?

有没有其他/更好的方法来做到这一点? 哪个更受欢迎? 不知道如何certificate这两种方式的合理性。

谢谢!

蒂姆。

答案是“哪一个更受欢迎?” 问题取决于几个因素:

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

最终,您的设计约束可帮助您确定最佳选择; 没有普遍“更好”的数据结构。

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

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

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

  • 结构是否只包含基本类型( intfloat ,其他struct等),它只与其他基元/结构交互?
    然后使用带有函数的struct

这是一种权衡。

一个类及其实例将在资源上花费更多,特别是当你必须制作它们时。 如果不会有这么多实例,那就不是问题了。

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

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