objective-c - 用户多次生成同一个 Action 等待下载怎么办?

标签 objective-c multithreading web-services

我正在设计一个 iPhone 应用程序。用户搜索一些东西。我们从网上抓取数据。然后我们更新表格。

伪代码是

[DoThisAtbackground ^{
  LoadData ();
  [DoThisAtForeground ^{
    UpdateTableAndView();
  }];
}];

如果在第一次搜索完成之前用户搜索其他内容会怎么样。

解决问题的行业标准方法是什么?

  1. 跟踪哪个线程仍在运行,只更新表 所有线程何时完成?
  2. 每次线程结束时更新 View ?

我们具体是怎么做到的?

最佳答案

我建议你看看 iOS Human Interface Guidelines . Apple 认为所有应用程序以大致相同的方式运行非常重要,因此他们针对此类问题编写了详尽的文档。

指南中有两件事与您的问题相关:

  • Make Search Quick and Rewarding :“如果可能,在用户键入时也过滤远程数据。虽然过滤用户的键入可以带来更好的搜索体验,但如果响应时间可能会延迟结果,请务必通知他们并让他们有机会选择退出超过一两秒。”
  • Feedback :“反馈确认人们的行为并向他们保证处理正在进行。人们在操作控件时期望立即得到反馈,并且在长时间操作期间他们喜欢状态更新。”

虽然这些指南中当然有很多废话,但我认为以上几点实际上是一个值得遵循的好主意。作为用户,我希望在搜索时发生一些事情,并且当您在每次线程结束时更新 View 时,用户将看到最快的响应。是的,这可能是用户不想要的结果,但事情正在发生!例如,以 iOS 中的 Safari 网络浏览器为例:即使您正在键入,Google 自动完成功能也会显示结果,而不仅仅是在您完成输入搜索查询时。

所以我认为最好选择第二个选项。

关于objective-c - 用户多次生成同一个 Action 等待下载怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12338777/

相关文章:

javascript - 如何在 JavaScript 中创建后台线程

java - 如何修复oracle weblogic中的WebService和package-info.java

web-services - 保护胖客户端应用程序中的 API key

java - 在cmd中使用idl2wsdl转换时无法在cxf_home/lib中找到cxf-manifest.jar

ios - CAShapeLayer 不可见

ios - Objective-C 访问 Plist 中的特定项目

c++ - std::mutex 作为多线程的成员变量线程安全吗?

ios - 带有渐进式 UIAlertView 的 AFNetworking 下载

objective-c - AVPlayer seekToTime 不适用于寻回

使用集合时线程安全的 C# 最佳实践(还不是并发的)