URL加载

本文详细介绍了在不同iOS和OSX版本中使用NSURLSession、NSURLDownload和NSURLConnection进行URL请求的方法,包括内存中和磁盘文件中数据存储的区别,以及如何在简单和复杂请求中灵活运用这些API。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


URL加载


URL加载系统中的类,往往被用来获取URL指定的内容。你可以通过多种方法获取网络内容,这取决于你的应用需求。API的选择一方面取决于OS X或iOS系统的版本,另一方面取决于获取的内容放在文件里,还是放在内存里。


  • IOS >= 7.0或OS X >= 10.9,推荐使用NSURLSession完成URL请求。
  • 对于想支持老版本OS X的软件,你可以使用NSURLDownload下载URL指定的内容到某个文件。
  • 对于想支持老版本IOS或OS X的软件,你可以使用NSURLConnection下载URL指定的内容到内存,然后你自己再将数据写到磁盘上的某个文件里。


你所采用的方法大部分取决于你是否希望将获取的数据存放在内存还是直接存放到磁盘上的文件里。


获取的数据存放在内存
在高层接口中,有两个基本的方法用来获取URL数据到内存。
  • 对于简单的请求,使用 NSURLSession API来直接获取NSURL指定的内容,既可以直接存放在内存,也可以直接存放到文件。
  • 对于复杂的请求,比如上传数据,需要提供一个NSURLRequest对象(或NSMutableURLRequest对象)结合NSURLSession 或 NSURLConnection一起发送请求。
不管你选择了哪个方法,你都可以使用下面两种方式中任意一个获取返回的响应数据:
  • 提供完成处理block,URL加载类会在接收完数据时调用这个block。
  • 实现代理协议,每当URL加载类收到数据时,它会调用你的代理方法。这样你必须负责追加数据,直到所有body数据都返回。
除了数据本身,从代理方法或完成处理block返回的响应对象中,还可以获取其他元数据,比如MIME类型和内容长度。

相关章节:Using NSURLSession,Using NSURLConnection


获取的数据直接存放到磁盘上的文件里
在高层接口中,有两个基本方法下载URL指定的内容到指定的磁盘文件。

  • 对于简单的请求,使用NSURLSession直接获取NSURL指定的内容,既可以直接存放在内存,也可以直接存放到文件。
  • 对于复杂的请求,比如上传数据,需要提供一个NSURLRequest对象(或NSMutableURLRequest对象)结合NSURLSession 或NSURLDownload一起发送请求。
NSURLSession相对于NSURLDownload有两个重大优势:在ios中只能使用NSURLSession;当你的应用挂起、终止或意外退出时,可以在后台继续下载。


注意:通过NSURLDownload或NSURLSession实例初始化的下载不能缓存。如果你需要缓存结果,你的应用必须用NSURLConnection 或 NSURLSession,并且自己将数据写到磁盘上。


相关章节:Using NSURLSession,Using NSURLDownload




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值