2012-01-16 126 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

我有類似的問題,但事實證明,方法鏈中的泄漏實際上更高,但儀器(錯誤地)指向這條線。查看存儲從此代碼中檢索結果的方法。