2010-07-20 4 views
0

je l'utilise a1 = [[NSMutableArray alloc] init]; maintenant ce que devrait être la meilleure façon de libérer a1NSmutable problèmes de mémoire pour l'iphone

maintenant je suis Releasing dealloc()

je suis allocation a1 dans viewDidLoad() et afficher 10 images il

Répondre

0

Un exemple de base serait:

// get the party started 
NSMutableArray *tmpArray = [[NSMutableArray alloc] init]; 
// as an example, just copy some user defaults into the mutable array 
tmpArray = [[userDefaults objectForKey:@"UserDefaultsExample"] mutableCopy]; 

// do something here with tmpArray (i.e. if ([tmpArray count] == 0) //do something) 

// once you are done with tmpArray, go ahead and release it 
[tmpArray release]; 

Pour votre cas, vous voulez libérer le tableau une fois que vous avez terminé avec lui (à savoir à la fin de viewDidLoad est probablement un pari sûr tant que vous en avez vraiment fini avec). Si vous le faites de cette façon, vous n'avez pas besoin de créer un objet NSMutableArray dans votre fichier .h, le synthétiser et libérer dans dealloc. Au lieu de cela, vous venez de créer un temporaire comme je l'ai fait ci-dessus et le relâcher lorsque vous avez fini de montrer les images de celui-ci.

+0

merci beaucoup même si je libère mon reatincount = 1 [Communiqué de a1]; \t NSLog (@ "ce que vous avez% d", [a1 retainCount]); = 1 comment faire 0 et est-ce neceaasry pour tracer tous les tableaux et chaîne reatinCount = 0 pour l'optimisation de la mémoire ?? – ram

+0

L'utilisation d'une méthode pratique comme 'mutableCopy' place l'objet dans un pool d'autorelease pour que votre compte de retenue ne soit pas immédiatement nul. Vous pouvez vouloir une lecture supplémentaire: http://cocoawithlove.com/2009/07/rules-to-avoid-retain-cycles.html et http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual /MemoryMgmt/MemoryMgmt.html – iwasrobbed

+0

hey clé comme thi UserDefaultsExample peut par tout droit ??? c'est juste un texte n'est-ce pas ??? ou quoi d'autre .. utilisez-vous UserDefaultsExample any wer autre que tmpArray = [[userDefaults objectForKey: @ "UserDefaultsExample"] mutableCopy]; – ram