Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios jsonObjectWithData导致内存崩溃?_Ios_Objective C_Ipad_Cocoa Touch - Fatal编程技术网

Ios jsonObjectWithData导致内存崩溃?

Ios jsonObjectWithData导致内存崩溃?,ios,objective-c,ipad,cocoa-touch,Ios,Objective C,Ipad,Cocoa Touch,我正在使用AfNetworking 2.0中的AFHTTPRequestOperation从服务器获取响应数据 NSURLRequest *request = [[ServiceHelper instance] getRequestData:postDict :[ServicesConfiguration GET_DOCUMENTS_URL]]; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationMan

我正在使用AfNetworking 2.0中的AFHTTPRequestOperation从服务器获取响应数据

NSURLRequest *request = [[ServiceHelper instance] getRequestData:postDict :[ServicesConfiguration GET_DOCUMENTS_URL]];
        AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
        manager.requestSerializer = [AFHTTPRequestSerializer serializer];
        manager.responseSerializer = [AFHTTPResponseSerializer serializer];

        AFHTTPRequestOperation *requestOperation = [manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) {

            NSDictionary *returnData = [[ServiceHelper instance] getReturnDictionary:responseObject];

        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"Error: %@", error);
        }];
在responseObject上调用的getReturnDictionary方法是一个简单的JSON序列化程序

- (NSDictionary *) getReturnDictionary : (NSData *) data {

    if ( data == nil ) {
        return [NSDictionary dictionary];
    }

    NSError * error = nil;
    NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

    if (error != nil) {
        NSLog(@"Error parsing JSON: %@",error);
        return [NSDictionary dictionary];
    }
    else
        return jsonDict;
}
这适用于数据量较小的情况。但当响应对象的大小接近100mb时,应用程序将挂起

NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
大约15秒后,由于内存错误,应用程序崩溃。 我认为数据的巨大规模是不言自明的,但它不应该能够处理它吗

如果我直接从[NSURLConnection sendSynchronousRequest:];-它工作时没有悬挂或碰撞。因为这是我最初做的-但是切换到AFNetworking以更容易地显示进度条

欢迎您提供任何想法或建议。

更新: 因此,您有两个选项来解决此问题:

大宗报价

使用NSJSONReadingMutableContainers作为选项

大宗报价

如果“上一步”不起作用,您将面临如下已知问题:

现在您有两种选择:

使用本机JSON序列化 首先将JSON文件下载到磁盘,而不使用AFNetworking和parse。
准确的错误是什么?没有错误。表示上的应用程序意外终止。来自调试器的消息:由于内存错误而终止。这是以前报告的一种已知问题。我更新了answe。还将提交AFNetworking的票证。请注意,100MB的JSON将解析为500MB的iOS对象,可能是这一数字的两倍。