NSURLSession 内部有 NSOperationQueue 吗?

问题描述 投票:0回答:1

A)如果 NSURLSession 在 iOS7 中在后台运行任务,Apple 是否在 NSURLSession 中集成了内部队列?它在辅助线程和 App 挂起模式下如何工作?

B)NSURLSession 和 NSOperationQueue 有什么区别?

C)如果 NSURLSession 是 NSURLCOnnection 的替代品,我们是否可以将 NSURLSession 集成到 NSOperationqueue?

D)两者相同吗?

E)我们可以在 NSURLSession 中做与 NSOperationQueue 中相同的事情吗?

ios iphone ios7
1个回答
10
投票

A)是的,NSURLSession 有其操作队列,它维护队列中的所有会话任务委托。

B) 不,NSURLSession 和 NSOperationQueue 没有什么可以比较的。其实NSURLSession本身就有一个NSOperationQueue的属性。 NSURLSession 是 NSURLConnection 的替代 API,而不是 NSOperationQueue。

C) 不需要显式地将其集成到 NSOperationQueue 中。每个 NSURLSession 对象都有自己的 NSOperationQueue 来同时执行其任务。

D) 参考 A、B、C

E)同样,这是一个错误的比较,NSURLSession 不是 NSOperationQueue 的替代品或等效物,它是 NSURLConnection 的替代品。

F) NSURLSession 允许使用带有后台会话配置的 iOS7 后台获取模式

[NSURLSessionConfiguration backgroundSessionConfiguration:@"identifier"];

如果您的问题是关于一般后台任务执行,在 iOS7 中您可以在后台执行一个任务 180.0 秒。但对于后台抓取请求,只能抓取30.0秒

G)是的,后台获取基本上是为操作系统管理的定期下载/上传数据流而设计的。操作系统根据可用的系统资源定期为您的应用程序提供时间范围。如果您的应用程序无法在 30.0 秒内完成下载,则使用 NSURLSession 可以在下次恢复相同的任务。

NSURLSession 正在不断发展,并且在 iOS8 中也有新的优先级请求模型,所以我建议您使用 NSURLSession。它是异步的,支持身份验证处理,支持单独的缓存存储,支持定期下载等等。

© www.soinside.com 2019 - 2024. All rights reserved.