Iphone “表视图”之后刷新需要很多时间;重新加载数据();

Iphone “表视图”之后刷新需要很多时间;重新加载数据();,iphone,xcode,uitableview,rss,Iphone,Xcode,Uitableview,Rss,这就是我想做的: 从苹果的RSS中获取包含应用信息的xml,解析它,并在一个可编辑的视图中显示应用 问题是在“reloadData()”之后大约需要5秒钟才能显示信息。 此外,应用程序总是在打开项目后第一次运行时崩溃 以下是项目: 在表中显示缓慢加载(即基于网络)数据的公认习惯用法是,如果数据尚未出现在表中,则在单元格中显示活动指示器,然后在后台下载数据(NSOperationQueue和NSOperation非常适合),并在数据准备就绪时发出通知。几乎可以肯定的是,在向表提供数据时,您自己的延

这就是我想做的: 从苹果的RSS中获取包含应用信息的xml,解析它,并在一个可编辑的视图中显示应用

问题是在“reloadData()”之后大约需要5秒钟才能显示信息。 此外,应用程序总是在打开项目后第一次运行时崩溃

以下是项目:

在表中显示缓慢加载(即基于网络)数据的公认习惯用法是,如果数据尚未出现在表中,则在单元格中显示活动指示器,然后在后台下载数据(NSOperationQueue和NSOperation非常适合),并在数据准备就绪时发出通知。几乎可以肯定的是,在向表提供数据时,您自己的延迟(网络延迟和解析时间),而不是UITabvleView在处理重载数据调用时的延迟

编辑:了解更多信息,并解决延迟问题:

  • 代码从主线程外部调用UI例程(“[table reloadData]”)。那很糟糕,不要那样做

  • 您正在尝试将图像信息“推”到[self-loadImages]中的表中,而不是让表在cellForRowAtIndexPath中一次“拉”一行信息

编辑:好的,把钱放在我的嘴边:我做了以下更改,所有延迟都消失了(根据NSLog时间戳,performSelectorOnMainThread和CellForRowatineXpath之间大约有2毫秒)


注意,应用程序仍然不正确,图像还没有刷新。请记住:在后台下载图像,并向视图控制器类发送新图像可用的通知,然后调用[reload Table](当然是从主线程中运行的通知处理程序中调用!)。不要从任何后台线程调用UIKit函数。这应该足以让您重新构造代码,以执行正确的操作。

我也面临同样的问题。我通过在UI线程上运行代码解决了这个问题:

  NSOperationQueue.mainQueue().addOperationWithBlock(){
  //Perform action on main thread
    tableView.reloadData();
  }

你应该考虑把这个放在吉瑟布上。这比下载一个Zip文件并查看它更容易理解。你的代码有点糟糕,但问题很有趣。顺便说一句,下次发布代码时,请删除构建目录。这将文件大小从1MB减少到~50kI,并在他的所有方法(包括他的解析和他的NSO操作)中放入一些NSLog。在最后一个方法激发后,有5秒的延迟,直到来自此方法的[table reloadData]触发
tableView:CellForRowatineXpath:
+1我完全错过了非主线程部分。我把每一行都读了10遍,但都没看懂。太遗憾了^^嗨,我在主线程中添加了重新加载数据,但重新加载表仍然需要时间。。
  NSOperationQueue.mainQueue().addOperationWithBlock(){
  //Perform action on main thread
    tableView.reloadData();
  }