0

假设我有一个数组employees1

[
{"id":"1", "name":"Bill"},
{"id":"2", "name":"Jhon"},
{"id":"3", "name":"Almas"},
]

或带有对象的数组employees2 :Employee

@interface Employee : NSObject {
    NSNumber *employeeID;
    NSString *name;
}
@property (nonatomic, retain) NSNumber *employeeID;
@property (nonatomic, retain) NSString *name;

第二种情况更面向对象,易于在大型项目中使用。
如果我有很多员工,employee2数组会分配比employee1更多的(2x,3x ...)内存吗?他们有多少不同?

4

2 回答 2

1

在大多数情况下,使用面向对象的模型可能会降低内存占用,因为您不需要NSDictionary实例的开销。

但是,您可以(就像我刚才所做的那样)编写一个简单的测试用例并在 Instruments 上运行它来证明给自己看。在这种情况下,我使用您的模型构建了这样一个测试,创建了 10K 个对象,并显示使用自定义对象您的整体内存占用减少了约 23%。

总是更好地进行测试,尽管老实说面向对象模型是如此清晰,以至于从长远来看,内存占用的微小差异即使是负差异也可能更好。

发表评论:我在这里和其他地方看到了许多与构建应用程序的整个模型层有关的NSDictionary问题NSArray。我无法想象永久维护该代码会多么令人头疼。使用面向对象更清晰。

于 2012-12-07T10:51:10.063 回答
0

在真正成为问题之前,您真的不应该担心这些事情。如果内存个问题,你应该通过不总是让所有员工同时在内存中来解决它,即将数据持久化到磁盘,并在需要时获取它。 这是关于内存管理以及如何防止与内存相关的问题的指南

于 2012-12-07T10:45:38.130 回答