A)如果 NSURLSession 在 iOS7 中在后台运行任务,Apple 是否在 NSURLSession 中集成了内部队列?它在辅助线程和 App 挂起模式下如何工作?
B)NSURLSession 和 NSOperationQueue 有什么区别?
C)如果 NSURLSession 是 NSURLCOnnection 的替代品,我们是否可以将 NSURLSession 集成到 NSOperationqueue?
D)两者相同吗?
E)我们可以在 NSURLSession 中做与 NSOperationQueue 中相同的事情吗?
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。它是异步的,支持身份验证处理,支持单独的缓存存储,支持定期下载等等。