Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSURLConnection和发出异步请求的不同方式_Ios_Http_Rest_Asynchronous_Nsurlconnection - Fatal编程技术网

Ios NSURLConnection和发出异步请求的不同方式

Ios NSURLConnection和发出异步请求的不同方式,ios,http,rest,asynchronous,nsurlconnection,Ios,Http,Rest,Asynchronous,Nsurlconnection,我需要通过HTTP和HTTPS与RESTful服务通信。我正在阅读一些关于通过NSURLConnection类执行异步请求的示例,其中一些使用sendsynchronousrequest:queue:completionHandler:方法,另一些使用connectionWithRequest:delegate:方法并实现nsurlconnectionlegate方法。我无法弄清楚这些方法中的每一种都有什么含义,如果差异只是在实现上,但性能和结果是相同的,或者其中一种方法比另一种更好或更正确 谢

我需要通过HTTP和HTTPS与RESTful服务通信。我正在阅读一些关于通过
NSURLConnection
类执行异步请求的示例,其中一些使用
sendsynchronousrequest:queue:completionHandler:
方法,另一些使用
connectionWithRequest:delegate:
方法并实现
nsurlconnectionlegate
方法。我无法弄清楚这些方法中的每一种都有什么含义,如果差异只是在实现上,但性能和结果是相同的,或者其中一种方法比另一种更好或更正确


谢谢

有两个差异通常是关键

  • 首先,两种方法的返回类型<代码>[NSURLConnection] sendAsynchronousRequest:queue:completionHandler://code>具有返回类型 of
    void
    ,这意味着您无法捕获NSURL连接,例如在 一种财产,所以你对它失去了相当多的控制权,即你不能
    [NSURLConnection cancel]
    取消连接。另一方面,[NSURLConnection connectionWithRequest:delegate:]会将连接返回给您,因此您保留完全控制权
  • 第二,如果您正在下载一个大文件,则使用基于块的方法 将数据加载到内存中,并在块 执行。假设你有一个小小的平静的回答,这对你来说可能没问题。 但是,如果您正在下载一个大文件,则可能需要编写 将传入的数据直接放入文件句柄以减少内存 消费。为此,您需要委托方法
    [NSURLConnectionDataDelegate连接:didReceiveData::
    。可悲的是 在当前的苹果文档中,没有现成的文档链接。 如果您将自己设置为NSURLConnection的代理,则 方法将被调用
希望这有帮助