2009-08-02 4 views
2

Je reçois beaucoup de fuites dans mon code, mais aucune des fuites ne pointe sur aucun de mes codes (ce sont toutes des méthodes UIKit).La mémoire fuit dans les instruments

Je cours 3.0.

Quelqu'un pourrait-il me dire comment je vais déterminer d'où proviennent ces fuites?

+0

Avez-vous les mêmes fuites sur le simulateur et l'appareil? – Nosredna

+1

Mr - jj C'est pas un blog. quels que soient les changements que vous voulez - mettez à jour dans votre question. –

Répondre

1

Faites attention à la manière dont vous interprétez les informations sur l'origine des fuites. Par exemple, il n'est pas rare de fuir des chaînes "d'espace réservé" - chaînes par défaut qui sont allouées au début de la construction de l'objet, puis généralement remplacées par votre propre code personnalisé. Bien que vous ne directement attribuer les espaces réservés, vous devez besoin de gérer le remplacement correctement. En d'autres termes, les fuites sont évitables, et elles sont de votre faute, pour ainsi dire.

Cependant, il existe des fuites dans le SDK. UIWebView fuit définitivement un peu, par exemple.

Pourriez-vous nous montrer la pile d'appels pour la fuite? (Instruments/Vue/Détail détaillé pour voir la pile)

0

Merci de votre aide.

Tout ce que je fais est de charger un UITableView ici. Mais j'appelle une classe asyncimageview pour le chargement des icônes, et j'utilise une classe Singleton pour la source de données.

Quoi qu'il en soit, toutes les fuites pour chaque type (à savoir GSEVENTs) présentent les mêmes détails précis. L'élément qui ne montre pas tous les détails ne rapporte aucune de mes classes ou méthodes BTW.

Voici les clichés:

link text

J'ai lu quelque part sur les bugs dans UIAccelerometer (que je dois utiliser) qui pourraient faire en sorte que les problèmes GSEVENT.

J'ai apparié ma réserve de cellules au strict minimum, sans classes supplémentaires (sauf le singleton). Doit être dans le singleton alors. J'ai pratiquement utilisé l'exemple de code TheElements pour construire cette classe.

Voici mon cellForRowAtIndexPath maintenant (même avec cette barbones, l'application fuit toujours, même lorsque le défilement):

static NSString *myCell = @"myCell"; 
[self.tableView deselectRowAtIndexPath:indexPath animated:YES]; 

UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:myCell]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:myCell] autorelease]; 
} 
UILabel *l=[[[UILabel alloc] initWithFrame:CGRectMake(10,10,200,16)] autorelease]; 
l.backgroundColor=[UIColor blackColor]; 
l.font=[UIFont boldSystemFontOfSize:15]; 
l.textColor=[UIColor whiteColor]; 
l.text=[(NSDictionary *)[[News sharedNews].newsArray objectAtIndex:indexPath.row] objectForKey:@"text"]; 
[cell.contentView addSubview:l]; 

return cell; 
0

avéré être l'accéléromètre. Je l'ai enlevé et les fuites ont disparu.

Questions connexes