我正在读取许多plist并将它们显示在一个UITableview中。问题是,应用程序本身非常慢,我确实读到了一些关于归档或序列化的东西,归档是否会使应用程序更快,或者如果我想使用大量数据,我应该尝试使用sqlite?
如果有人能告诉我如何归档数据或如何序列化数据以优化plist,那就太好了。
这就是我所拥有的:(我在这里收集‘data’中的所有数组)
- (void) makeData {
data = [[NSMutableArray alloc] init];
sectionArray = [[NSMutableArray alloc] init];
//here we connect each array built with the remote plist on the server - different plists for each
amenajariArray = [[NSMutableArray alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://..../amenajari.plist"]];
apicultoriArray = [[NSMutableArray alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://..../apicultori.plist"]];
asigurariArray = [[NSMutableArray alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://..../asigurari.plist"]];发布于 2012-05-27 23:45:49
您正在发出看起来像是三个同步web请求来获取数据。你应该让它们至少是异步的和并行的。您还可以采用在后台同步或更新数据的方法,并使用默认数据集进行开箱即用。查看concurrency programming guide中的dispatch_async块或操作队列。您还可以查看ASIHttpRequest中的异步方法。您必须找到一种方法,不会因为连续阻塞的http请求而阻塞UI线程。另一个SO在GCD async UI上发帖:performSelectorOnMainThread with multiple parameter
此外,如果您要持久化多个数据列表,并且开始遇到性能问题,则可能需要考虑sqlite或core data (由sqlite支持)。
请记住,如果您要持久化列表,修改一个项/属性将写入整个列表。此外,如果要存储许多列表(尤其是在数据之间存在关系的情况下),则数据库可能更合适。它还可以提供更快、更优化的查询模式。
发布于 2012-05-28 00:06:18
在上述情况下,数组已经以plist (xml)格式进行了序列化。即使您序列化成二进制格式,它也不会像您所希望的那样提高性能。
为了提高性能,您可以使用延迟加载概念来填充表视图数据源数组。或者显示前25行,然后显示下一行的按钮。这些都需要sqlite或核心数据。
https://stackoverflow.com/questions/10775200
复制相似问题