我打算定义一个类,它的属性中包含x / y网格的坐标。但是,我不确定采用这种设计的“最佳”方法。这是一个非常简单的问题,我只是想正确地做到并且有正当理由!
一个解决方案是在对象中有两个属性,类型为“int
”,一个用于x,一个用于y。
另一个是定义包含x / y值的两个int的typedef结构并命名为<ClassPrefix>Coordinate
。与CGSize
相似?
还有其他/更好的方法吗?哪个更受欢迎?不知道如何证明这两种方式的合理性。
谢谢!
添
答案 0 :(得分:11)
“哪一个更受欢迎?”的答案问题取决于几个因素:
struct
获胜;如果答案是“五十八”,则对象获胜。struct
可能没问题。struct
可能是更好的选择。struct
可能是更好的选择。最终,您的设计限制可帮助您确定最佳效果;没有普遍“更好”的数据结构。
答案 1 :(得分:4)
除了@dasblinkenlight回答,我还会给你一些决定建议:
创建后结构是否不可变?使用对象。
结构是否拥有(=保留)指向其他对象或数组(C数组或NSArray
)的指针?它是否与对象交互(=具有带对象参数的方法)?
然后使用对象。
结构是否只包含基本类型(int
,float
,其他struct
等)并且它只与其他基元/结构交互?
然后使用带有函数的struct
。
答案 2 :(得分:1)
这是一种权衡。
一个类及其实例将在资源上花费更多,特别是当你必须制作它们时。如果不会有这么多实例,那就不是问题了。
结构更快但很难扩展,最不方便的是结构不能容纳对象或方法。
对于您的示例,如果您只是将它用于坐标,我建议您使用struct。但这取决于您的设计和代码。没有绝对的判断是最好的。