在NSURLConnectionDataDelegate中,有一些函数对确保一切正常非常重要,但我不确定会发生什么。
功能......
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
和其他几个人。
他们总是按照我提出的顺序发生吗?即,你得到的第一件事是回应,还是在连接的生命中任何时候都能发生?
答案 0 :(得分:3)
-connection:didReceiveResponse:
将被调用0次或更多次。如果出现错误,则会调用-connection:didFailWithError:
。如果您正在获取多部分mime消息,则可以多次调用此方法,并且一旦有足够的日期创建响应对象并且在调用-connection:didReceiveData:
之前调用此方法。
-connection:didReceiveData:
将被调用0次或更多次。如果有超过0字节的主体,则在调用-connection:didFinishLoading:
之前至少调用一次此方法。永远不会在-connection:didReceiveResponse:
之前或-connection:didFinishLoading:
或-connection:didFailWithError:
之后调用此方法。
-connection:didFinishLoading:
只被调用一次,这是最后一次调用。在此方法返回后的某个时间,将释放连接。如果调用-connection:didFailWithError:
并且始终是最后调用的东西,则不会调用此方法。
调用这些方法的时间以及头文件中存在哪种顺序的文档,但我还没有看到它在实际文档中简明扼要地写出来。
答案 1 :(得分:2)
对于委托方法,无论您将它们放在哪个订单顺序中。它们将在特定事件得到满足时发生。
第二件事,根据文件NSURLConnectionDataDelegate Protocol Reference:
didReceiveResponse :当服务器确定其有足够的信息来创建NSURLResponse时,将调用此方法。它可以被多次调用,例如在重定向的情况下,因此每次我们重置数据。
didReceiveData :当连接中有新的可用数据时,将调用此方法。这种方法称为多次
connectionDidFinishLoading :连接成功加载后发送。在重定向的情况下,此方法也称为多次。