gpt4 book ai didi

ios - NSURLConnection(作为 AFNetworking 的一部分)不调用 NSURLConnectionDataDelegate 委托(delegate)

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:58 24 4
gpt4 key购买 nike

问题

我正在使用 AFNetworking ,它生成一个 NSURLConnection 对象,用于上传照片。

NSURLConnection 没有调用

- (void)connection:(NSURLConnection __unused *)connection
didSendBodyData:(NSInteger)bytesWritten
totalBytesWritten:(NSInteger)totalBytesWritten
totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite

方法。 (它是 NSURLConnectionDataDelegate protocol 的一部分,在 NSURLConnection.h 中定义)

该请求是带有照片附件的 HTTP POST 请求(Content-Disposition“form-data”,Mime 类型“image/jpeg”)。这应该(我认为)导致在上传过程中定期调用此方法。

我需要向用户显示进度条的方法。但是,该方法未被调用。

注意:

  • 代理设置正确;调用其他委托(delegate)方法
  • 文件上传成功

AF网络代码

我很确定这是一个 NSURLConnection 问题,而不是 AFNetworking 问题。

但为了以防万一,这里是我的 AFHTTPClient 中的相关代码子类:

NSMutableURLRequest *request = [self multipartFormRequestWithMethod:@"POST" path:path parameters:parameters constructingBodyWithBlock:constructor];
AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure];

if (constructor) {
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
}

[self enqueueHTTPRequestOperation:operation];

我的 AFHTTPClient 子类不会覆盖我正在调用的任何方法:

  • multipartFormRequestWithMethod: path: parameters: constructingBodyWithBlock:
  • HTTPRequestOperationWithRequest: success: failure:
  • setUploadProgressBlock:
  • enqueueHTTPRequestOperation:

constructor是一个类型为 (void (^)(id<AFMultipartFormData>)) 的 block 并且不是 nil (通过单步执行代码验证)。

当我输入 po operation.uploadProgress 时在调试器中,我看到 $0 = 0x1301d9f0 <__NSMallocBlock__: 0x1301d9f0>所以我认为 block 设置正确。

文件总是上传成功,但是上传进度 block 中的代码没有运行,所以我的进度条永远不会更新。

问题

为什么 NSURLConnection 不调用这个方法?

NSURLConnection 应该在什么情况下? (它似乎没有得到很好的记录。)

最重要的是,如何向用户显示上传进度?

最佳答案

第三方错误报告库覆盖了 NSURLConnection 上的委托(delegate)方法。删除库解决了这个问题。 (AFNetworking 或 NSURLConnection 都没有问题。)

如果您能提供可以更快地解决此问题的故障排除步骤,我将奖励您。 (请记住,第三方库是经过编译的,因此无法进行源代码搜索。)

关于ios - NSURLConnection(作为 AFNetworking 的一部分)不调用 NSURLConnectionDataDelegate 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14836948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com