2010-11-19 7 views
4

私を運転している本当に簡単な質問は、INSANE。誰かがこのラインが漏れている理由を私に教えてもらえるかしら?iPhoneのメモリが漏れていますか?

NSString *post = [NSString stringWithFormat:@"<someXML><tagWithVar=%@></tagWithVar></someXML>",var]; 
post = [NSString stringWithFormat:@"xmlValue=%@",(NSString *)CFURLCreateStringByAddingPercentEscapes(
                       NULL, 
                       (CFStringRef)post, 
                       NULL, 
                       (CFStringRef)@"!*'();:@&=+$,/?%#[]", 
                       kCFStringEncodingUTF8)]; 

文字列をURL形式にエンコードするだけです。私の理解から、stringWithFormat:は、自動解放されたオブジェクトを返す必要があります。どうやらそれはそうではありません。それは動作しますが、リークします。何か案は??

+0

参考までに、これはXcodeとは関係がないので、私はあなたの質問にタグを付けました。 –

+0

ハハ、お電話、ありがとう。 :) – gabaum10

答えて

15

CFURLCreateStringByAddingPercentEscapesを使用しています。 Core Foundation関数の名前に "Create"がある場合は、返されたオブジェクトを所有していることを意味します。つまり、CFStringRefCFURLCreateStringByAddingPercentEscapesで返す必要があります。

NSString *post = [NSString stringWithFormat:@"...", var]; 
CFStringRef stringRef = CFURLCreateStringByAddingPercentEscapes(...); 
post = [NSString stringWithFormat:@"xmlValue=%@",(NSString *)stringRef]; 
CFRelease(stringRef); 
+4

私にそれを打つ! :) –

+0

あなたが質問に役立っているので、 :) –

+0

それはまだそれがある時点で自動リリースされているように見えます。私が[post release]に電話しようとすると、私はすべてを設定した後、ゾンビが呼び出されたときにクラッシュします(私がそれを自分でリリースした後)。 – gabaum10

関連する問題