NSURLConnection方法在IOS5中不再可用



我正在查看NSURLConnection类,该类可用于建立与URL的同步或异步连接,然后检索其数据…IOS 5对这个类做了很多改变,我看到他们引入了一些与认证或下载相关的正式协议,但我没有看到,例如,如果connection:didReceiveResponse:消息(之前发送给委托并且它不再可用)在某些协议中仍然可用…如何实现异步连接,并在收到响应后立即检索HTTP标头?我确信有一种比使用NSURLConnectionconnection:didReceiveResponse:消息更好的方法。方法像stringWithContentsOfURL总是同步加载内容?你用什么在你的应用程序中实现异步下载,避免过时的方法和响应事件,如_http response received_m等?如果可能的话,您是否在后台任务中启动同步下载?

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:

正如你所看到的,你仍然可以使用你以前的委托,可能做一些小的修改。

有关更多信息,请参阅iOS 4.3到iOS 5.0 API差异文档和本地Xcode安装中的NSURLConnection.h。当发布新的SDK版本时,头文件中的文档比开发人员库中可用的文档更可靠的情况并不少见。后者需要一段时间才能更新。

我刚刚遇到了同样的问题。看起来发送异步请求更简化与块和NSOperationQueue

+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler

这意味着委托现在只用于身份验证和失败问题。

不!如果你仔细查看Apple的库,它们不仅限于用于身份验证和失败问题。

自从将+(void)sendAsynchronousRequest:queue:completionHandler:引入NSConnection类对象后,许多可以像以前一样执行NSConnectionDelegate方法的东西现在可以在称为"NSConnectionDataDelegate"的正式协议中使用&NSConnectionDownloadDelegate,打开一个新的房间,为NSURLConnection方法添加更多的功能。(从iOS5启动)

所以我认为这是一种改进,而不是限制它们的使用

我也没有在Apple网站上找到相关文档

https://developer.apple.com/library/ios/文档/可可/引用/基金/类/NSURLConnection_Class/引用/Reference.html

https://developer.apple.com/library/ios/文档/基金/引用/NSURLConnectionDelegate_Protocol/引用/Reference.html

这里应该有

最新更新