我现在有一个奇怪的边缘情况,即来自nsurlconnection委托方法的响应代码:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;

在后续委托方法之前触发:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;

我的代码当然可以使用改进,因为现在它从上面检查http响应代码,然后调用一些方法来采取行动。不幸的是,目前还没有数据。
有什么好的解决方案可以将responseresponseData耦合在一起,在responseresponseData是200+而不是nil之前,我的classes方法不会被触发。我需要将它们都设置为类实例变量吗?看来是穷人的解决办法。

最佳答案

数据之前的响应是正确的顺序。事实上,您应该清除该方法中的任何数据(如果您通过重定向接收多个响应,并且任何干预数据都过时)。
您将收到一条connection:didReceiverResponse:Message,通知您已收到回复头,但这会在任何正文内容之前发生。
如果您需要访问回复的所有元素,您只需在它们传入时存储响应和数据,并且只在connectionidfinishloading中处理它们:(或者如果您的数据很长,您可以在connection:didReceiveData:中增量处理)。

10-06 16:06
查看更多