2010-12-08 4 views
0

My App a tendance à planter beaucoup ... :(problèmes de mémoire concernant App

Je sais que je fais des erreurs dans désaffecter les vues et les objets .. Je veux juste knw en dehors de désaffecter la mémoire dans la dernière , comment puis-je gérer la mémoire entre le code ...

aussi ma plupart des viewcontrollers utilise -(void)ViewDidLoad pour créer le views..so shud j'utilise -(void)ViewDidUnload trop avant désaffecter la mémoire ???

Si oui , alors plz me guider comment l'utiliser ??

Existe-t-il un autre moyen de résoudre les problèmes de mémoire? :(

Répondre

1

Gardez à l'esprit que viewDidLoad peut b. e appelé plusieurs fois, cela est particulièrement vrai dans les situations de faible mémoire où les vues peuvent être automatiquement déchargées pour économiser de la mémoire.

Dans ce cas, vous pouvez vérifier si votre objet est nul avant de l'allouer ou le libérer dans un avertissement de mémoire (dans didReceiveMemoryWarning, si self.view.superview == nil, les éléments seront automatiquement libérés).

Vous devriez également apprendre à connaître les outils de profilage à un moment donné, ou au moins le profileur de fuite. Dans Xcode, allez au Run -> Run With Performance Tool -> Leaks. Il y a quelques problèmes avec cet outil que vous pourriez toucher, mais une fois que vous vous en approchez, vous vous demanderez comment vous avez vécu sans (Par exemple, si votre nom d'hôte contient des caractères spéciaux, vous devrez le renommer).

+0

comment utiliser cette FUITES .. ??? Il ne montre pas où le code fuit dans le code source .. :( – Hisenberg

+0

Essayez http://stackoverflow.com/questions/728088/instruments-leaks-not-showing-my-source-code – Winder

0

Si u ont créé un objet dans le fichier .h et attribué une seule fois alors u doit libérer cet objet dans cette méthode:

- (void) {dealloc [Communiqué de myObject]; [super dealloc];}

mais si u ont créé un objet localement (dans .m) fichier, puis relâchez-le à l'endroit où il n'est pas nécessaire plus