typedef结构主场迎战对象 - 优势(typedef struct vs. Object - B

2019-08-17 12:37发布

我打算定义一个类,即它的属性中包含的坐标为x / y的网格。 不过,我不能确定的“最好”的方式来处理这个设计。 这是一个非常简单的问题,我只想做是正确的,有一个理由!

一种解决办法是有两个属性,类型“的int ”,一个用于x和一个用于Y,在对象内。

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

是否有其他/更好的方法来做到这一点? 这是首选? 不知道如何不管怎样自圆其说。

谢谢!

蒂姆。

Answer 1:

这个问题的答案在“哪一个优先?” 问题取决于几个因素:

  • 有多少类似的商品要创建? -如果答案是“百万”, struct胜; 如果答案是“58”,对象胜。
  • 你需要定义它的方法? - 如果答案是“是”,对象胜; 否则, struct可能确定。
  • 你打算来定义它的阵列? -如果答案是“是”, struct可能是更好的选择。
  • 你需要创建和销毁往往它? -如果答案是“是”, struct可能是更好的选择。

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



Answer 2:

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

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

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

  • 是否结构仅包含原语类型( intfloat ,其他struct小号等),而且只与其他原语/结构相互作用?
    然后用struct与功能。



Answer 3:

这是一个权衡。

A类和它的实例将花费更多的资源,尤其是当你必须让他们中的很多。 如果不会有那么多的情况下,这是没有问题的。

结构是快,但它很难程度和最不方便的是一个结构不能持物或方法。

对于你的榜样,如果你只是使用它的坐标,我建议你使用结构。 但是它取决于你的设计和代码。 没有绝对的判断,这是最好。



文章来源: typedef struct vs. Object - Benefits