目标c - 我应该使用什么来并行化iOS应用程序中对REST服务器的频繁HTTP请求:GCD或NSThread



我正在开发一个应用程序,该应用程序必须从服务器为用户提取新消息。我已将其实现为每 2 秒触发一次的计时器,并调用一个选择器,该选择器是一种实现 HTTP 请求和服务器响应处理的方法。所以我认为在主线程中执行此操作是一个非常糟糕的主意。

我没有在iOS中进行多线程处理的经验。所以我想知道什么适合并行化这个任务:GCD 还是 NSThread?

您应该尽可能

在 API 堆栈中工作。这样,您就可以专注于编程功能,而不是管理线程。GCD 使用系统已经启动的线程,它比管理自己的代码效率高得多。更好的目标是将您的网络封装到NSOperation中,然后可以放在NSOperationQueue上,这些将在一个或多个后台线程上执行,无论系统认为对于当前电源状态和其他类似的事情来说都是一个好数字。

与纯 GCD 方法相比,NSOperation的好处是可以取消操作。一旦一个区块被提交到 GCD,它无论如何都必须运行。

如果你想用NSOperation封装你的HTTP请求,你可能有兴趣知道有人已经为你做了这件事。 AFNetworking是最受推崇的iOS网络堆栈之一,使用NSOperation作为其基础进行构建,因此很容易多线程。

一个好主意是尝试将解析代码封装到NSOperation中,然后随着网络请求操作的返回,您可以创建解析操作实例,并将它们放在另一个队列中,以便在后台进行处理。

最新更新