2010-11-19 15 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 laisser 256 octets fuite.La mémoire fuit dans Iphone

Et quelques autres fuites également présentes dans mon application liées au kit web et à la bibliothèque Foundation.

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

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

Ces lignes laissent des fuites liées à UIKit WebKit et DataDetectorsCore.

S'il vous plaît suggérer une solution à ce problème. La mémoire totale fuite est d'environ 3 Ko, puis-je laisser dans l'application ou non.

+1

Dans le grand schéma des choses, 3KB n'est pas beaucoup ... Je suis un développeur iPhone débutant, mais en utilisant Appcelerator je reçois habituellement plus de 40 Mo de mémoire (un bug dans leur cadre) et l'application va fonctionner bien (va planter après un certain temps sur les appareils plus anciens). Après cette expérience, je suis passé à ObjC parce que je préférerais traquer mes fuites de mémoire que quelqu'un d'autre ... Quoi qu'il en soit, vous voulez probablement une opinion plus experte, mais je ne pense pas 3KB est particulièrement mauvais ... –

+1

IMO fuites de mémoire aren Si ça ne grandit pas avec le temps, oublier de libérer quelques objets ici et là ne va pas tuer une application mais avoir des fuites de mémoire qui augmentent avec le temps. Donc, si c'est un 3KB constant quelle que soit la durée de votre application, vous pouvez envisager de l'ignorer (cela dit, personnellement je ne livre jamais des trucs avec des fuites de mémoire) parfois même si les memleaks sont un symptôme d'autre chose . –

Répondre

0

La fuite d'UIFont que vous avez mentionnée peut ne pas être une fuite du tout. La possibilité que UIFont n'a pas été libérée est mise en cache interne par UIFont lorsque vous utilisez la méthode fontWithName.

+0

Une fuite est déterminée lorsqu'il n'y a aucune référence détectée à un objet alloué. S'il était mis en cache, il y aurait une référence, et le détecteur de fuite ne considérerait pas qu'il a fui. – dreamlax

+2

Pas entièrement; il y a un certain nombre de jeux qui peuvent être joués pour cacher un pointeur de la détection par le mécanisme d'analyse des fuites. Les faux positifs sont rares, mais cela arrive. Faux négatifs, d'un autre côté, ou communs. – bbum

1

Je doute que vous ayez une fuite sur les instances UITableViewCell. Vous avez créé des UITableViewCells personnalisées, vous devez peut-être vérifier ces UITableViewCells.

+0

J'avais vérifié sur l'instrument il quelque temps il montre cette fuite et quelques fois pas mais il jette définitivement par UIFont. Et une autre fuite présente ici parce que la vue Web (kit Web) je mentionne dans le code ci-dessus.S'il vous plaît Proposer une solution. Merci pour votre soutien. – Ishu