NSURLConnectionDelegate调用顺序

时间:2014-01-29 14:55:18

标签: ios http nsurlconnection

我最近开始在我的项目中使用NSURLConnection,我想知道我用来处理接收数据的模式是否合适。

如果我收到404或其他错误,我实际上并不想对数据做任何事情,所以仍然将它附加到我的对象是一种浪费。因此,我只想在获得200状态后创建数据对象。

假设在任何-connection:didReceiveResponse:回调之前调用-connection:didReceiveData:是否安全?

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [self.data appendData:data];
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSHTTPURLResponse *)response
{
    if (response.statusCode == 200) {
        self.data = [NSMutableData data];
    }
    else {
        NSLog(@"Connection failed with status code %d", response.statusCode);
        [self.connection cancel];
    }
}

1 个答案:

答案 0 :(得分:1)

didReceiveResponse会调用beforeDidReceiveData,根据Apple文档,可能会在一个连接中多次拨打电话

  

您应该为您的代表准备接收   connection:didReceiveResponse:单个消息多次   连接;如果响应是多部分MIME,则会发生这种情况   编码。每次代表收到   connection:didReceiveResponse:message,它应该重置任何进度   指示并丢弃所有先前收到的数据(除了   多部分回应的情况)。

Source