2012-01-16 125 views
0

我正在使用以下代码来解析JSON并在第2行上获取内存泄漏(100%)。我不知道什么是问题,有人可以帮助我吗?使用SBJSON解析JSON字符串时发生内存泄漏

NSString *response = [request responseString]; 
    NSMutableDictionary *responseJSON = [response JSONValue]; (100% leak) 

    NSString *tockenString = [responseJSON objectForKey:@"Token"]; 
    NSString *userIDString = [responseJSON objectForKey:@"ID"]; 
+0

在我看来,你是过度释放的东西。 – 2012-01-16 18:39:02

+0

编辑我的问题,但仍然没有运气。 – AAV 2012-01-16 18:46:27

+0

您是否使用github上SBJSON的最新版本?你有没有尝试过使用像KSJSON这样的替代JSON解析器?你有没有使用仪器来确定哪个代码路径导致泄漏? – warrenm 2012-01-16 19:13:46

回答

1

我找到了答案。转到SBJsonParser.m功能scanRestOfString和

 *o = [[NSMutableString alloc] initWithBytes:(char*)c length:len encoding:NSUTF8StringEncoding]; 

更改线路

 *o = [[[NSMutableString alloc] initWithBytes:(char*)c length:len encoding:NSUTF8StringEncoding] autorelease]; 

SBJsonParser在scanRestOfString /的NSMutableString相似。我也报告了这个错误。谢谢你们。

+1

似乎很奇怪,你会发生这样一段很好用的代码中的错误。 – 2012-01-17 00:43:58

+1

即使我发现它很奇怪。但是当我实施这些改变时,我没有从仪器分析中得到任何泄漏。 – AAV 2012-01-17 00:52:52

0

删除这2个autoreleases。它们过度释放物体。

+0

编辑我的问题,但仍然没有运气。 – AAV 2012-01-16 18:46:42

0

我有类似的问题,但事实证明,方法链中的泄漏实际上更高,但仪器(错误地)指向这条线。查看存储从此代码中检索结果的方法。