Objective c 使用AFNetworking 2.0发布帖子时的EXC_错误访问
我的代码:Objective c 使用AFNetworking 2.0发布帖子时的EXC_错误访问,objective-c,http,post,afnetworking-2,Objective C,Http,Post,Afnetworking 2,我的代码: AFHTTPSessionManager *manager = [AFHTTPSessionManager manager] ; manager.requestSerializer = [AFJSONRequestSerializer serializerWithWritingOptions:NSJSONReadingAllowFragments]; manager.responseSerializer = [AFJSONResponseSerializer serializerWi
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\u BAD\u ACCESS code=1
错误。响应对象是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
更新
我在代码上运行了仪器,如果有僵尸出现
AFNetworking
正在尝试调用N错误,但该错误已被解除分配。我认为出现这种情况是因为POST
调用最初成功,但仍有一个错误被标记。因此,它最初认为没有错误,并将其设置为nil
,但随后尝试在POST
的错误块中调用它 如果您使用的是最新版本,则可能会遇到JSON序列化程序返回错误的情况。您可以通过以下方式解决此问题,直到发布新版本:
- 删除序列化程序中的
@autoreleasepool
,或
- 将错误范围更改为自动释放池之外
(以上链接的问题概述了这两种解决方案。)
另一方面,不需要在完成处理程序中分派到主队列。AFNetworking保证在主线程上调用完成块。是self.mutableData
nil
?如果是这样,那么这可能是一个很好的问题,可以发布在.self.mutableData!=无
问题似乎是对已解除分配的错误的调用谢谢!这终于使它起作用了。我将更新我的完成处理程序以删除dispatch\u async。没问题!很乐意帮忙。