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

あなたが過度のものを解放しているように私に見えます。 –

+0

私の質問を編集しましたが、まだ運がありません。 – AAV

+0

githubのSBJSONの最新リリースを使用していますか? KSJSONのような別のJSONパーサーを使ってみましたか?インストゥルメントを使用して、どのコードパスがリークを引き起こすかを判断しましたか? – warrenm

答えて

1

答えが見つかりました。 SBJsonParser.m機能scanRestOfStringに移動し、

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

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

からライン

を変更SBJsonParserはscanRestOfString/NSMutableStringのようにしています。私はバグも報告した。皆さん、ありがとうございました。

+1

このようなよく使われているコードのバグが起きるのは間違いです。 –

+1

でも私はそれが奇妙に感じました。しかし、私が変更を実装したとき、私は機器分析から漏れはありませんでした。 – AAV

0

これらの2つのオートレリーゼを除去します。彼らはオブジェクトを過剰にリリースします。

+0

私の質問を編集しましたが、まだ運がありません。 – AAV

0

私は同様の問題を抱えていましたが、実際にはメソッドのチェーンで漏れが多くなっていましたが、Instrumentsは(間違って)この行を指していました。このコードから取得した結果を格納するメソッドを見てください。

関連する問題