异步操作与异步网络任务?
Async Operation vs Async Network task?
具有需要异步调用 RESTful Web 服务以获取 JSON 内容,然后解析该 JSON 响应以创建一些数据模型实体的常见场景。这个过程可能是 cancelled/resumed。我不完全确定最好的方法是:
- 为网络调用实现一个
Operation
,为 JSON 实现另一个 Operation
解析并设置两个操作之间的依赖关系(前者的 JSON 输出是后者的数据输入)。然后,将这些操作添加到 OperationQueue
.
- 使用
URLSession
和 URLSessionDataTask
执行网络调用,并在其回调中进行 JSON 解析。
或者另一种更好的方法?
编辑: 在我的场景中,我不需要执行并发网络调用。如果我需要用不同的参数调用服务,我应该能够在必要时停止以前的网络任务,并启动新的。
在大多数简单的情况下,答案只是一个 URLSession,但如果它很复杂,就像您看起来的那样,那么 Operation 是一个有用的工具。 Advanced NSOperations.
中详细讨论了这个精确的用例
具有需要异步调用 RESTful Web 服务以获取 JSON 内容,然后解析该 JSON 响应以创建一些数据模型实体的常见场景。这个过程可能是 cancelled/resumed。我不完全确定最好的方法是:
- 为网络调用实现一个
Operation
,为 JSON 实现另一个Operation
解析并设置两个操作之间的依赖关系(前者的 JSON 输出是后者的数据输入)。然后,将这些操作添加到OperationQueue
. - 使用
URLSession
和URLSessionDataTask
执行网络调用,并在其回调中进行 JSON 解析。
或者另一种更好的方法?
编辑: 在我的场景中,我不需要执行并发网络调用。如果我需要用不同的参数调用服务,我应该能够在必要时停止以前的网络任务,并启动新的。
在大多数简单的情况下,答案只是一个 URLSession,但如果它很复杂,就像您看起来的那样,那么 Operation 是一个有用的工具。 Advanced NSOperations.
中详细讨论了这个精确的用例