如何解决iOS:处理重叠的后台请求
| 在iOS应用程序中,我正在编写一个将要发送消息的类,进行后台请求(通过performSelectorInBackground:withObject:
),然后通过委托方法返回结果(然后将其显示在地图上)。一次发生一个请求时,一切似乎都正常,但是我试图弄清楚如何处理多个重叠的请求。例如,如果用户在启动后台线程的搜索框中输入内容,然后在初始后台线程完成之前输入其他内容,应如何处理?
有几个选项(不要在第一个请求正在进行时启动第二个请求,在请求第二个请求时立即停止第一个请求,让它们同时运行并返回独立结果,等等),但是有一个选项常见/推荐的处理方式?
解决方法
我认为对此没有普遍的答案。我的建议是按照任务的功能和它们之间的关系来分离任务(以NSOperations和/或块的形式)。
例如:您不希望通过从Web上获取一些无关的提要来将图像大小调整操作添加到同一队列中,特别是如果它们之间不存在关系时。也许您这样做是因为两者都需要大量内存,并且因为它们不能并行运行。
但是您可能希望将Web图像搜索操作添加到同一队列,同时取消之前添加到此队列的相同类型的操作。这些图像搜索操作中的每一个都可能会初始化图像调整大小操作,并将其放入其他队列中。现在,您已经有了关系,除了图像搜索操作之外,还必须取消调整大小。如果图像搜索操作比关联的调整大小操作花费更长的时间怎么办?您如何保留对它的引用或何时完成?
是的,它很容易变得复杂,如果由于每种情况的独特性而我没有给您提供任何具体的答案,很抱歉,但最终使其像瑞士钟一样运转非常令人满意:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。