2010-11-19 23 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 lassen 256 Bytes Leck.Speicherlecks in Iphone

Und einige andere Lecks auch in meiner App im Zusammenhang mit Web-Kit und Foundation-Bibliothek.

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

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

Diese Zeilen hinterlassen UIKit WebKit und DataDetectorsCore related Lecks.

Bitte schlagen Sie eine Lösung für dieses Problem vor. Gesamtleck Speicher ist ca. 3 KB, kann ich dies in der App verlassen oder nicht.

+1

Im großen Schema der Dinge, 3KB ist nicht viel ... Ich bin ein Neuling iPhone-Entwickler, aber mit Appcelerator Ich bekomme in der Regel 40 MB Speicher durchgesickert (ein Bug in ihrem Rahmen) und die App wird ausgeführt gut (wird auf älteren Geräten nach einer Weile abstürzen). Nach dieser Erfahrung bin ich auf ObjC umgestiegen, weil ich lieber meine Speicherlecks aufspüren möchte als jemand anderes ... Wie auch immer, Sie wollen wahrscheinlich eine bessere Meinung, aber ich glaube nicht, dass 3KB besonders schlecht ist ... –

+1

IMO Speicherlecks aren So schlimm, wenn sie nicht mit der Zeit wachsen, vergessend, ein paar Objekte hier zu veröffentlichen und es wird keine App umbringen, aber Speicherlecks haben, die mit der Zeit zunehmen werden. Also, wenn es eine konstante 3KB ist, unabhängig davon, wie lange Ihre App läuft, können Sie darüber nachdenken, es zu ignorieren (das heißt, persönlich ich nie Zeug mit Speicherlecks aus beruflichen Stolz liefern) manchmal Memleaks sind ein Symptom für etwas anderes, so ist es immer gut zu untersuchen . –

Antwort

0

Das von Ihnen erwähnte UIFont-Leck ist möglicherweise überhaupt nicht undicht. Die Möglichkeit, dass UIFont nicht freigegeben wurde, ist das interne Caching von UIFont, wenn Sie die fontWithName-Methode verwenden.

+0

Ein Leck wird festgestellt, wenn keine Referenzen auf ein zugeordnetes Objekt gefunden werden. Wenn es zwischengespeichert wurde, gab es einen Hinweis darauf, und der Leckdetektor würde es nicht als durchgesickert ansehen. – dreamlax

+2

Nicht ganz; Es gibt eine beliebige Anzahl von Spielen, die gespielt werden können, um einen Zeiger vor der Erkennung durch den Leckanalyse-Mechanismus zu verbergen. Falsche Positive sind selten, aber passieren. Falsche Negative andererseits oder allgemein. – bbum

1

Ich bezweifle, dass Sie auf den UITableViewCell-Instanzen undicht sind. Sie haben einige benutzerdefinierte UITableViewCells erstellt, vielleicht müssen Sie diese UITableViewCells überprüfen.

+0

Ich hatte es ein paar Mal überprüft es zeigt dieses Leck und einige Male nicht, aber es wirft definitiv von UIFont. Und noch ein Leck hier vor Web-Ansicht (Web-Kit) Ich erwähne in oben genannten Code.Bitte schlagen Sie einige Lösung vor. Danke für Ihre Unterstützung. – Ishu