首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSURLConnectionDelegate呼叫顺序

NSURLConnectionDelegate呼叫顺序
EN

Stack Overflow用户
提问于 2014-01-29 14:55:17
回答 1查看 76关注 0票数 0

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

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

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

代码语言:javascript
复制
- (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];
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-29 15:13:17

是的,didReceiveResponse会打电话给beforeDidReceiveData,而且根据苹果文档,它可能在一个连接中多次接到电话。

您应该为您的委托做好准备,以便接收连接:didReceiveResponse: message多次用于单个连接;如果响应采用多部分MIME编码,则可能发生这种情况。每次委托接收到连接:didReceiveResponse: message时,它都应该重置任何进度指示,并丢弃以前接收的所有数据(多部分响应除外)。

来源

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21434629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档