IOS5中不再提供NSURLConnection方法

Gia*_*nzi 29 nsurlconnection ios5

我正在查看NSURLConnection可用于建立与URL的同步或异步连接然后检索其数据的类... IOS 5对此类进行了很多更改,我看到他们引入了一些正式的与身份验证或下载相关的协议,但是我没有看到,例如,connection:didReceiveResponse:消息(先前发送给代理并且它不再可用)在某些协议中仍然可用.如何实现异步一旦收到响应,就连接并检索HTTP标头?我敢肯定有一种方法比使用更好NSURLConnection随着connection:didReceiveResponse:消息..等的方法stringWithContentsOfURL也总是同步加载的内容?您在应用程序中使用什么来实现异步下载,避免使用已弃用的方法并对_http响应receive_m等事件做出反应?如果可能,您是否在后台任务中启动同步下载?

小智 68

NSURLConnectionDelegate已经成为一个正式的协议(它是以前版本中的一个非正式协议).在此协议中,声明了以下(非弃用)方法:

  • connection:didFailWithError:
  • connectionShouldUseCredentialStorage:
  • connection:willSendRequestForAuthenticationChallenge:

此外,有两个子协议符合NSURLConnectionDelegate:

NSURLConnectionDataDelegate 用于将数据加载到内存的委托,并声明以下方法,其中一些我相信您会觉得熟悉:

  • connection:willSendRequest:redirectResponse:
  • connection:didReceiveResponse:
  • connection:didReceiveData:
  • connection:needNewBodyStream:
  • connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:
  • connection:willCacheResponse:
  • connectionDidFinishLoading:

NSURLConnectionDownloadDelegate 用于将数据直接存储到磁盘文件的委托,并声明以下方法:

  • connection:didWriteData:totalBytesWritten:expectedTotalBytes:
  • connectionDidResumeDownloading:totalBytesWritten:expectedTotalBytes:
  • connectionDidFinishDownloading:destinationURL:

如您所见,您仍然可以使用以前的代表,可能需要稍作修改.

有关更多信息,请参阅本地Xcode安装中的iOS 4.3到iOS 5.0 API差异文档和NSURLConnection.h.发布新的SDK版本时,头文件中的文档比开发人员库中提供的文档更可靠,这并不罕见.后者需要一段时间才能保持最新状态.

  • GRRRR!截至2013年3月9日,NSURLConnection类参考STILL没有任何关于NSURLConnectionDataDelegate的参考.如果不是这个问题,我仍然会搜索.以下是Apple关于此协议的文档:http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSURLConnectionDataDelegate_protocol/Reference/Reference.html (2认同)