我遇到了解析xml或json的要求,并且必须在表中列出它们。
我没有遇到这个问题,但我想优化代码以减少内存资源。
问题是,最好是拥有多个数组,还是最好有一个内容为字典的单个数组。
请看下面的示例,其中3个名称以2种方式保存
方式1
NSArray* names = [NSArray arrayWithObjects:
[NSDictionary dictionaryWithObjectsAndKeys:
@"rama krishna",@"firstname",
@"chunduri",@"surname",
nil],
[NSDictionary dictionaryWithObjectsAndKeys:
@"rama krishna",@"firstname",
@"gutta",@"surname",
nil],
[NSDictionary dictionaryWithObjectsAndKeys:
@"selvakumar",@"firstname",
@"k",@"surname",
nil],
nil];
方式2
NSArray *firstnames=[NSArray arrayWithObjects:@"Rama Krishna",@"Rama Krishna",@"selvakumar",nil];
NSArray *surnames=[NSArray arrayWithObjects:@"chunduri",@"gutta",@"k",nil];
因此,这两种方式中的哪一种可以优先用于优化内存消耗。
答案 0 :(得分:10)
您刚刚遇到了使用面向对象编程的绝佳场所。
你的字典例如,“firstname”到“rama krishna”和“surname”到“gutta”,应该真正被分组为一个带有NSString*
实例变量的类,用于姓氏和名字。
E.g:
@interface Person : NSObject {
NSString *firstname;
NSString *surname;
}
@end
然后你将拥有一组Person
个对象。在大多数情况下,更容易使用,以及“正确”的做事方式。任何触摸你代码的人都会感谢你。
答案 1 :(得分:0)
更好的选择是在数组中添加字典。即一个数组和多个字典。我在最新的申请中使用了这个:
// In a loop
NSMutableDictionary *dictError=[NSMutableDictionary dictionaryWithObjectsAndKeys:maxCount,kID,kUsers,kEntity,[Utils convertDateInString:[NSDate date]],kDate,kTrue,kStatus,kEnter,kDescription, nil];
[arrError addObject:dictError];
通过这种方式,您可以将字典作为数组对象添加。并获得可视的对象:
NSMutableDictionary *nameDictionary = [arrError objectAtIndex:1];
NSString *strEntityName = [nameDictionary objectForKey:@"KeyName"];