码迷,mamicode.com
首页 > Web开发 > 详细

OC的NSURLSession

时间:2015-06-21 07:01:27      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

  上一次的WWCD大会发布,说明了要废弃NSURLConnection,估计很多人蛋疼了。在Xcode7中已经不能使用NSURLConnection了,这样也导致了很多第三方框架不能在Xcode7中使用。NSURLSession的崛起已成为了必然!

  为了适应IT这个行业必须不断更新知识,不断充实自己,所以我认真的学习了一下NSURLSession。

  NSURLSession的简介(IOS 7.0以后出现):

1.支持后台运行网络任务

2.暂停、停止、重启网络任务,不再需要 NSOperation 封装

3.请求可以使用同样的配置容器

4.不同的 session 可以使用不同的私有存储

5.block 和代理可以同时起作用

6.直接从文件系统上传、下载

注意:为了方便程序员使用,苹果提供了一个全局 session

所有的 任务(Task) 都是由 Session 发起的

所有的任务默认是挂起的,需要 Resume,很多时候很多人在使用的时候都会忘记写resume。

session 的回调是异步的

  NSURLSession的成员变量NSURLSessionConfiguration:

NSURLSessionConfiguration 用于设置全局的网络会话属性,包括:身份验证,超时时长,缓存策略,Cookie 等,可以代替NSURLRequest。

NSURLSessionConfiguration 有三个类构造方法是为不同的用例设计的

1.+ (NSURLSessionConfiguration *)defaultSessionConfiguration- 返回标准配置,具有共享 NSHTTPCookieStorage(cookie仓库)NSURLCache(路径缓存) 和 NSURLCredentialStorage(证书仓库)。

2.+ (NSURLSessionConfiguration *)ephemeralSessionConfiguration- 返回一个预设配置,没有持久性存储的缓存,Cookie或证书。这对于实现像秘密浏览功能的功能来说,是很理想的

3.+ (NSURLSessionConfiguration *)backgroundSessionConfigurationWithIdentifier:(NSString *)identifier NS_AVAILABLE(10_10, 8_0)-独特之处在于,会创建一个后台会话。后台会话不同于常规的,普通的会话,它甚至可以在应用程序挂起,退出,崩溃的情况下运行上传和下载任务。初始化时指定的标识符,被用于向任何可能在进程外恢复后台传输的守护进程提供上下文

NSURLSessionConfiguration的常用属性

//Hosts是一个系统文件,记录了一些网站的IP地址和域名的对应关系

//Cookie就是服务器暂存放在你计算机上的一笔资料,好让服务器用来辨认你的计算机\

NSURLSessionConfiguration-->HTTPShouldSetCookies是否应该设置cookie HTTPCookieAcceptPolicy设置cookie的选择

属性描述
HTTPAdditionalHeaders HTTP 头字段
timeoutIntervalForRequest 超时时长
timeoutIntervalForResource 整个资源请求时长
requestCachePolicy 缓存策略
allowsCellularAccess 允许蜂窝访问
HTTPMaximumConnectionsPerHost 对于一个host的最大并发连接数,默认数值是 4,MAC 下的默认数值是 6

NSURLSession注意事项

一旦指定了 session 的代理,session会对代理进行强引用,如果不主动取消 session,会造成内存泄漏!

解决方案

解决方法1:在任务完成后取消 session

缺点:session一旦被取消就无法再次使用

解决方法2:在视图将要消失的时候取消 session

优点:只需要一个全局的session统一管理

  

 

   

OC的NSURLSession

标签:

原文地址:http://www.cnblogs.com/jingdian/p/4591410.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!