NSDictionary或NSObject与NSStrings作为属性,哪个更好?

时间:2009-04-03 08:38:58

标签: iphone objective-c sdk

如果代码是为iPhone应用程序编写的,那么在使用NSDictionaryNSObjectNSStrings作为属性之间哪种方法更好,在更快的性能和有效的内存管理方面?

E.g。如果应用程序处理解析XML文件,如下所示:

< ?xml version="1.0" encoding="utf-8" ?>

<Sync status="1" syncdate="03/04/2009 11:25:34 AM">

< FirstName>AAA< / FirstName>

< MiddleName>BBB< / MiddleName>

< LastName>ZZZ< / LastName>

< Age>28< /Age>

< Gender>Male< /Gender>

< /Sync>

然后,在存储解析的值时,哪种方法更有效率,如果XML文件大小可以更大?与将相同的已解析数据存储到{{1}中相比,将解析后的值存储在“NSDictionary”中,与相应的“密钥”(例如Key=FirstName Value=AAA)相比有效且正确变量(即具有所有感兴趣节点的NSString属性来存储相应的值。例如NSString将存储NSString *firstName子类的“AAA”)? 我正在寻找更快的性能以及内存效率。

3 个答案:

答案 0 :(得分:1)

  

在更快的性能和有效的内存管理方面

答案可能归结为你的应用程序 - 你将拥有多少这些对象,你将如何访问它们 - 它们是不是只是阅读等等。

我会给你一些一般的建议 - 让它先工作,然后根据需要优化速度和尺寸。在写入之前不要优化它。

答案 1 :(得分:1)

就性能而言,没有比实际执行测试更好的了。人们已经对NSArray感到惊讶,{{3}}似乎比预期更复杂,只是为了性能优化。

换句话说,如果在XML文件的未来版本中添加新属性,我会说NSDictionary比自定义NSObject更灵活。在couterpart中,我还会说具有明确命名属性的自定义NSObjectNSDictionary更易读,因此更易于维护。

答案 2 :(得分:0)

不是真正的答案: 您还可以使用带有键值编码的NSArray,但我不了解与NSObject / NSDictionary相比的效果。

但我很确定使用NSObject将是最快的,因为根本没有开销。