iOS项目中的潜在漏洞

iOS项目中的潜在漏洞,ios,objective-c,memory-leaks,Ios,Objective C,Memory Leaks,您好,我有一个函数,它从项目中的文件中获取虚拟数据: 这些行显示了问题: NSString*path=[[NSBundle mainBundle]pathForResource:@StatisticsDataJSON类型:@TXT];-物体的潜在泄漏 NSMutableDictionary*statisticsResponse=[jsonParser objectWithString:data];-“jsonParser”中存储的对象可能泄漏 对于statisticsResponse中的id键{

您好,我有一个函数,它从项目中的文件中获取虚拟数据: 这些行显示了问题:

NSString*path=[[NSBundle mainBundle]pathForResource:@StatisticsDataJSON类型:@TXT];-物体的潜在泄漏

NSMutableDictionary*statisticsResponse=[jsonParser objectWithString:data];-“jsonParser”中存储的对象可能泄漏

对于statisticsResponse中的id键{-存储到“statisticArray”中的对象的潜在泄漏

对于int i=0;i 但是,dealoc函数中的sbjsonstreamparseracumerator.m出现了一些故障


问题出在哪里?

请注意,关于潜在泄漏的警告出现在潜在泄漏之后,因为这是引用对象技术泄漏的第一个点。因此,您当前的修复程序可能过度发布,导致崩溃

您问题中的第一句话实际上指的是这一行中的泄漏,紧接着:

self.statistics = [[NSMutableDictionary alloc]init];
您没有对该已分配字典的进一步引用,并且它是一个保留属性,因此您存在漏洞

self.statistics = [[[NSMutableDictionary alloc]init] autorelease];
将修复该问题。下一个问题是,解析完成后,您必须在完成jsonParser后释放它:

我不打算一一介绍,但你应该明白,基本上你需要阅读《内存管理指南》,或者更新到ARC


注意警告中的变量名。它们会告诉你泄漏的位置。

你没有使用ARC吗?旧项目-不是ARC我建议你更新它。从外观上看,编写它的人对内存管理一无所知。要么就是这样,要么就是你没有显示全部情况。你分配的所有内容都需要释放lat呃。你在这么做吗?在这之后,这个方法中的对象永远不会被使用。我不会带你去了解内存管理的基础知识。我建议你阅读苹果公司的一整篇文章。我从来没有说过任何关于path变量的事。谢谢,在我看到你的答案之前,我已经处理了所有泄漏,除了自我统计。你的回答解决了我最后的问题=
self.statistics = [[NSMutableDictionary alloc]init];
self.statistics = [[[NSMutableDictionary alloc]init] autorelease];
[jsonParser release];