Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.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/9/ios/106.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
Iphone SBJSON解析器内存不足警告_Iphone_Ios_Ipad_Sbjson - Fatal编程技术网

Iphone SBJSON解析器内存不足警告

Iphone SBJSON解析器内存不足警告,iphone,ios,ipad,sbjson,Iphone,Ios,Ipad,Sbjson,我正在进行JSON数据解析,下载了大量图像并进行数据解析 - (void)connectionDidFinishLoading:(NSURLConnection *)connection { NSString *responseString = [[NSString alloc] initWithData:webdata encoding:NSASCIIStringEncoding]; [webdata release]; [connection rel

我正在进行JSON数据解析,下载了大量图像并进行数据解析

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
  {   

     NSString *responseString = [[NSString alloc] initWithData:webdata encoding:NSASCIIStringEncoding];
     [webdata release];
     [connection release];
     NSDictionary *values = [(NSDictionary*)[responseString JSONValue] objectForKey:@"UserId"];
     NSDictionary *Active = [(NSDictionary*)[responseString JSONValue] objectForKey:@"Active"];
     [responseString release];
     NSString *UserID=[NSString stringWithFormat:@"%@",values];
     NSString *Status=[NSString stringWithFormat:@"%@",Active];
     [WSDelegate WServiceResponseMsg:@"WS_Authenticate_User" withResponse:UserID forParam:Status];
}

我有很多类使用上面的代码进行解析,但由于SBJSON解析器,应用程序在一段时间后崩溃。在instrument中,它给出了应用程序崩溃的原因是内存不足的警告。

大多数开发人员在使用SBJSONParser时都有内存泄漏,这是一个非常错误的假设。SBJSONParser没有任何泄漏,也不会在代码中引入泄漏。 的确,INSTRUMENTS告诉您泄漏是由于SBJSONParser造成的,但它表示其他原因。泄漏是由于您实现SBJSONParser API的方式造成的。您的代码中一定有错误


去检查一下你仪器里的漏洞。打开“扩展详细信息”工具栏,查看泄漏的代码行。仪器会告诉您最近的泄漏位置。

更好的选择是使用iOS 5及以上版本附带的
NSJSONSerialization

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
  {  
    NSMutableDictionary *values = [NSJSONSerialization JSONObjectWithData:receivedData options:NSJSONReadingMutableContainers error:&error];
}

终于找到了解决方案。只需使用以下行进行JSON解析。删除NSMutableDictionary并使用id:

 NSError *jsonError = nil;

 id allValues = [NSJSONSerialization JSONObjectWithData:webdata
                                                   options:0
                                                     error:&jsonError];

 NSArray *array = [allValues objectForKey:@"Contestants"];

是的,您是对的。问题在于实现SBJSON解析器。它在工具的扩展细节栏中给出内存不足警告,因为以下行NSDictionary值=[(NSDictionary)[responseString JSONValue]objectForKey:@“UserId”];但我不知道我的代码在内存管理中的作用是什么?你们在用字典值和活动值做什么。我很确定这两个字典的问题在于考虑使用ARC(自动引用计数)。没有理由不这样做。它使iOS的编码更加方便,并且很可能解决您的问题。SBJson 3.1需要ARC,否则它将泄漏。这不是SBJson中的错误。这里有很好的文档记录:我已经按照您的建议实现了代码,我面临着这方面的漏洞。在实现了您在上面给我的代码后,我上传了仪器的图像,但它在下面一行给出了100%的内存泄漏,所以您能告诉我内存管理的错误在哪里吗?