我正在开发iPhone 3.1.3应用程序。
我有一个名为Object2D
的课程,包括字段和方法;它代表一种形状。 Object2D
有一个表示其大小的字段,另一个表示其类型的字段。
现在,我需要另一个名为Pattern
的类,它是一组形状。在Pattern
我将有一系列形状。从这些形状我只需要它们的大小,类型和它们在模式内的位置,我不需要任何方法。
我想知道最好有一个代表形状的新结构,而不是使用Object2D
类。
我问这个是因为我考虑了内存性能。我不确定,但struct比类小,也许最好使用它们而不是类。
您怎么看?
答案 0 :(得分:20)
如果您正在考虑使用内存,那么差异在几乎所有情况下都可以忽略不计。对象是一个比等效结构更大的指针。
更大的不同在于如何使用它们。对象可以有方法和层次结构,并与Cocoa的其余部分进行交互。使用结构体,您需要为每个结构类型创建自定义函数或将虚拟对象系统组合在一起。最重要的是,任意结构与Cocoa(Touch)的其余部分不能很好地交互。例如:
通常,如果您正在使用类似Cocoa的框架,那么对象是一个很好的默认选择。一旦你确定你真的需要它们就使用结构。
答案 1 :(得分:4)
Objective-C类实际上是结构体,并且,如果实例变量的排列顺序与结构成员的顺序相同,则唯一的大小差异是NSObject
的4或8个字节isa
变量。
注意:上面的答案假设遗留的Objective-C运行时,不使用@property
和@synthesize
指令,这可能会影响它们的大小。