以用户友好的方式预加载数据

时间:2012-03-29 11:35:55

标签: iphone objective-c ios xcode cocoa-touch

我的应用程序包含从XML文件下载的数据。数据包含短文本和图像。

目前我正在ViewDidLoad方法中下载所有数据并在视图控制器中构建视图,这会导致应用程序在下载所有数据之前不显示根视图。我希望它以更加用户友好的方式显示,至少在启动画面期间预加载一些数据。

顺便说一句,我已经完成了延迟图像加载,因此在显示主视图时可以加载图像。

只要视图的数量取决于XML中的行数,在构建视图时异步加载XML并不符合我的需要(或者我可能是错的)。

我理解在答案中描述解决方案是一个相当大的挑战,所以也许您可以指向一篇文章甚至一本书,其中详细解释了异步和多线程处理。

2 个答案:

答案 0 :(得分:1)

我认为您应该解析appDelegate的 didFinishLaunchingWithOptions:方法中的所有数据,然后使用以下方法进行解析。

  [self performSelectorInBackground:@selector(downloadData:) withObject:nil];

方法 downloadData:包含解析过程。

答案 1 :(得分:1)

我不明白为什么你不能异步加载它o_O 你应该显示一些“加载”视图(最好有一个活动指标) 进度条也不错。

完成下载后,您只需重新加载并重新播放视图。

如果“视图数量”表示表格行中的单元格数量,则可以告诉tableview重新加载所有数据,而numberOfRowsInSection函数(或任何您想要使用的函数)应该返回适​​当的值,具体取决于它是否为加载与否。

编辑:当应用程序仍然加载时你不应该这样做,因为这对用户不友好,并且减慢了应用程序的加载速度