objective-c - 使用 AFNetworking 2.0 执行 POST 时的 EXC_BAD_ACCESS

标签 objective-c http post afnetworking-2

我的代码:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager] ;
manager.requestSerializer = [AFJSONRequestSerializer serializerWithWritingOptions:NSJSONReadingAllowFragments];
manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
[manager POST:[_urlBase stringByAppendingPathComponent:_urlRequest]
         parameters:paramDictionary
         success:^(NSURLSessionDataTask *task, id responseObject){
             dispatch_async(dispatch_get_main_queue(),^{
                 [self AFRequestFinished:responseObject];
             });
         }
         failure:^(NSURLSessionDataTask *task, NSError *error){
             NSLog(@"JSON ERROR PARAMETERS: %@", error);
         }
];

我正在使用此 POST 请求将多种类型的数据连同图片一起发送到服务器。
我正在使用与 GET 非常相似的东西请求,它工作正常。每当我运行此代码时,我都会在 AFNetworking 2.0 的以下行中收到 EXC_BAD_ACCESS CODE=1 错误。 responseObject 是 0x0:

responseObject = [self.responseSerializer responseObjectForResponse:task.response data:[NSData dataWithData:self.mutableData] error:&serializationError];

上面这行代码在if/else方法中:

- (void)URLSession:(__unused NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error

更新

我在代码上运行了 instruments,发现有一个僵尸存在。 AFNetworking 正在尝试调用 NSError,但它已被释放。我相信这是因为 POST 调用最初成功,但仍然标记了一个错误。所以它最初认为没有错误并将其设置为 nil,但随后尝试在 POST 的错误 block 中调用它。

最佳答案

如果您使用的是最新版本,您可能会遇到 this known issue当 JSON 序列化程序返回错误时。在以下人员发布新版本之前,您可以解决此问题:

  • 删除序列化器中的@autoreleasepool,或者
  • 将错误范围更改为自动释放池之外

(以上链接的问题中概述了两种解决方案。)

附带说明一下,无需在完成处理程序中分派(dispatch)到主队列。 AFNetworking 保证在主线程上调用完成 block 。

关于objective-c - 使用 AFNetworking 2.0 执行 POST 时的 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22309827/

相关文章:

objective-c - 时间以毫秒为典型时间格式

http - Golang 中的服务器头中间件

php - AJAX 正确发送变量,但无法在 PHP 中检索它

python - 使用 gae python 处理 HTTP POST 中的外来字符

jQuery.post() 里面的 jQuery.post()

ios - NSMutableArray 与 UITableView

objective-c - 如何控制表格单元格文本标签的位置?

html - Xcode 5 和本地 HTML 文件中的图像

html - 我可以使用哪种示例 url 会立即导致请求失败?

java - 在 Android 中从服务器获取和发送数据的最佳方法