2010-11-19 13 views
3
label = (UILabel *)[cell.contentView viewWithTag:1]; 
      label.text =labelString; 
      size = [label.text sizeWithFont:[UIFont fontWithName:@"ArialMT" size:14] constrainedToSize:CGSizeMake(320,9999) lineBreakMode:UILineBreakModeWordWrap]; 
      label.frame = CGRectMake(5, 5, 295, (size.height+25)); 

UIFontは256バイトのリークを残します。Iphoneのメモリリーク

また、WebキットとFoundationライブラリに関連して、私のアプリにもいくつかのリークがあります。

NSString *path = [[NSBundle mainBundle] pathForResource:@"Prayers" ofType:@"html"]; 
    NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:path]; 

    NSString *htmlString = [[NSString alloc] initWithData: 
          [readHandle readDataToEndOfFile] encoding:NSUTF8StringEncoding]; 

これらの行は、UIKit WebKitおよびDataDetectorsCore関連のリークを残します。

この問題の解決方法をご提案ください。漏れたメモリの総量は3 KBです。これはアプリ内に残すことができますか?

+1

私は初心者のiPhone開発者ですが、Appceleratorを使用すると、通常は40MB以上のメモリが漏れ(フレームワークのバグ)、アプリケーションが実行されます(古いデバイスではしばらくしてからクラッシュします)。その経験の後、私はObjCに切り替えました。なぜなら、他の人よりもメモリリークを追跡するからです...とにかく、もっと専門家の意見が必要ですが、3KBは特に悪いとは思わない... –

+1

IMOメモリリークaren時間が経っても成長しないなら、ここでいくつかのオブジェクトをリリースすることを忘れて、アプリを殺すことはありませんが、時間と共に増加するメモリリークを伴うことはありません。あなたのアプリがどれだけ長く実行されているかにかかわらず、定数3KBであれば、それを無視することもできます(つまり、個人的にはプロの誇りからメモリリークが出ることはありません).Memleakは何かの症状なので、 。 –

答えて

0

あなたが言ったUIFontリークは、まったくリークではないかもしれません。 UIFontが解放されなかった可能性は、fontWithNameメソッドを使用するときにUIFontによる内部キャッシングです。

+0

リークは、割り当てられたオブジェクトへの参照が検出されなかった場合に判定されます。キャッシュされていれば、そこへの参照があり、漏れ検出器はそれが漏れたとは考えません。 – dreamlax

+2

リーク解析メカニズムによる検出からポインタを隠すために再生できる任意の数のゲームが存在する。偽陽性はまれですが、起こります。一方、偽陰性は、または共通です。 – bbum

1

UITableViewCellインスタンスのリークが疑わしいです。 カスタムUITableViewCellsを作成しました。おそらくそれらのUITableViewCellをチェックする必要があります。

+0

私は、この漏れが何回か表示されている時間を計測器で確認しましたが、間違いなくUIFontがスローします。上記のコードで言及しているWebビュー(Webキット)のもう1つのリークがあります。いくつか解決策を提案してください。あなたのご支援のためにありがとうございます。 – Ishu