gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:38:00 26 4
gpt4 key购买 nike

我的代码:

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/

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