【问题标题】:Updating Table View As Items Are Downloaded下载项目时更新表视图
【发布时间】:2012-12-21 18:36:48
【问题描述】:

我有一系列表格视图。当第一个表视图中的项目被按下时,它会调用一个 web 服务,解析一些 xml,然后根据数据生成下一个表视图。我想知道如何在解析 xml 文档中的每个项目后更新表格视图。我尝试将表格视图对象传递给 xml 解析委托,并在完成对单个项目的解析时在表格视图上调用 reloadData,但它仍然等到整个文档完成解析才能显示单元格。

【问题讨论】:

  • 您遇到了阻塞问题。在单独的线程上解析 XML 并在主线程上更新 ui。 UI 只能在主线程上更新。
  • Christopher,你把它异步化了吗?

标签: iphone ios multithreading asynchronous xml-parsing


【解决方案1】:

其他人指出了异步解析 XML 和更新 UI 的优势,但您还应该注意,您选择的 XML 解析器可能是相关的。例如,如果您使用NSXMLParser,它倾向于在解析开始之前从远程服务器下载整个 XML 提要(因此在解析发生时尝试通过更新来改进 UI 几乎没有什么好处,因为主要延迟,从远程服务器,在解析开始之前就已经准备好了……与下载远程 XML 提要所花费的时间相比,解析所花费的时间通常可以忽略不计。

如果您查看 Apple 的 XMLPerformance sample,他们实际上会比较和对比 NSXMLParser 和 LibXML2。后者将随着下载的进行进行解析,而前者在下载完成之前不会开始。 (顺便说一句,这不仅会影响用户界面更新的速度,还会影响解析过程的内存占用。)

我还建议您查看 Ray Wenderlich 的文章,How To Choose The Best XML Parser for Your iPhone Project。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 2021-10-23
    相关资源
    最近更新 更多