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