Ios NSURLConnection和发出异步请求的不同方式
我需要通过HTTP和HTTPS与RESTful服务通信。我正在阅读一些关于通过Ios NSURLConnection和发出异步请求的不同方式,ios,http,rest,asynchronous,nsurlconnection,Ios,Http,Rest,Asynchronous,Nsurlconnection,我需要通过HTTP和HTTPS与RESTful服务通信。我正在阅读一些关于通过NSURLConnection类执行异步请求的示例,其中一些使用sendsynchronousrequest:queue:completionHandler:方法,另一些使用connectionWithRequest:delegate:方法并实现nsurlconnectionlegate方法。我无法弄清楚这些方法中的每一种都有什么含义,如果差异只是在实现上,但性能和结果是相同的,或者其中一种方法比另一种更好或更正确 谢
NSURLConnection
类执行异步请求的示例,其中一些使用sendsynchronousrequest:queue:completionHandler:
方法,另一些使用connectionWithRequest:delegate:
方法并实现nsurlconnectionlegate
方法。我无法弄清楚这些方法中的每一种都有什么含义,如果差异只是在实现上,但性能和结果是相同的,或者其中一种方法比另一种更好或更正确
谢谢 有两个差异通常是关键
- 首先,两种方法的返回类型<代码>[NSURLConnection]
sendAsynchronousRequest:queue:completionHandler://code>具有返回类型
of
,这意味着您无法捕获NSURL连接,例如在 一种财产,所以你对它失去了相当多的控制权,即你不能void
取消连接。另一方面,[NSURLConnection connectionWithRequest:delegate:]会将连接返回给您,因此您保留完全控制权[NSURLConnection cancel]
- 第二,如果您正在下载一个大文件,则使用基于块的方法
将数据加载到内存中,并在块
执行。假设你有一个小小的平静的回答,这对你来说可能没问题。
但是,如果您正在下载一个大文件,则可能需要编写
将传入的数据直接放入文件句柄以减少内存
消费。为此,您需要委托方法
。可悲的是 在当前的苹果文档中,没有现成的文档链接。 如果您将自己设置为NSURLConnection的代理,则 方法将被调用[NSURLConnectionDataDelegate连接:didReceiveData::