我有一个带有20个项目的plist(字典数组),20个字典中的每一个都有'code'和'text';每个文本平均1K字节。根据“代码”,使用该文本的类将使用20中的1个。文本没有改变所以我将它保存在捆绑包中。
我想知道我是否尽可能高效地进行此操作,基本上读取20K数据一秒钟,使用我需要的东西并释放除了我使用的1K以外的所有数据。
我有2个没有属性的ivars:
NSMutableArray *explanation;
UITextView *textView;
textView位于UITableViewCell中,而我从cellForRowAtIndexPath调用[self retrieveExplanation]。我从retrieveExplanation中加载textView而不是返回NSString,以保存额外的NSString内存分配。
-(void) retrieveExplanation {
explanation = [[NSMutableArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"explanation"ofType:@"plist"]];
textView.text = [[explanation objectAtIndex:[self.itemNumber intValue] - 1] objectForKey:@"text"];
[explanation release];
}
这可以更有效吗?我应该考虑使用20个plist或文本文件吗?
由于
答案 0 :(得分:0)
我认为你应该仔细考虑这个问题。普通iPhone加载所有20K文本需要多长时间。如果它真的很慢,您可能需要考虑将文本文件分开。
将它们分开时的问题是如何管理大量文本文件。我真的不建议你分成20个文本文件,与我们可以获得的性能相比,管理所有这些文件似乎有太多的开销。
我建议你分成4个文本文件,所以至少性能会上升4倍。如果它运行得足够快(例如,<1s),那么你的工作就完成了。如果不是,那么你需要分开更多
答案 1 :(得分:0)
这种东西真的很难确定。您可以提供建议,但最好通过尝试不同的方法并测量使用的时间来确定“真相”。
我所能建议的是尝试一些你所拥有的想法的想法并得到一些难以理解的数字。
此外,请确保您在设备上而不是通过模拟器进行测量。