Objective C Class还是struct?

Sco*_*ton 7 struct class objective-c nsarray

我有一个类歌曲,其属性为Title,Key,Artist等.没有方法.我遍历歌曲信息数据库并为每个创建一个Song对象,填充属性,然后将Song对象存储在NSArray中.

然后我想,为什么不只是有一个具有所有相同属性的结构歌曲而不是类宋.这样做会消除类文件,using类的.m文件中的#import Song行,以及需要alloc,init,release.

另一方面,我必须将struct定义放在可能需要它的每个类中.(除非有一些全局可访问的位置 - 是否存在?)此外,结构是否可以存储在NSArray中?

Nic*_*ore 19

我会用一堂课来做.结构不能存储在NSArray(或任何其他容器类中),除非将它包装在NSValue中,这可以完成,但有点繁琐.

另外,正如您所指出的,您必须在某处定义结构.通常的方法是在标题(.h)文件中定义它,就像类一样.所以那里的结构没有"收益".


Chu*_*uck 6

您不能将结构存储在NSArray中(查看其方法的签名 - 它们都可以获取和返回对象).但除此之外,正如我在最近另一个问题的答案中所说的那样,将对象放在结构体中总是一个坏主意.需要保留和释放对象,并且结构没有与它们相关联的代码,以确保在正确的时间发生.这作为模型对象更有意义.