2010-11-29 8 views
1

Je crée une application et chaque élément de barre d'onglets contient 4 ou parfois 5 navigation imbriquée .. j'essaie de faire chaque thins MAIS pushViewController cause un problème d'allocation de mémoire dans les instruments et je ne sais pas ce que je peux faire ,, le code estproblème d'allocation de mémoire pushViewController

[self.navigationController pushViewController:table animated:YES]; 
[table release]; 
table=nil; 

je tente d'imprimer le nombre de références et j'ai été choqué

le compte de référence avant pression est = 1 et après pression est = 4

POURQUOI ?? quelqu'un peut-il m'aider s'il vous plaît ??


le code est i utilisé pour lancer la table est

custemTable *table=[[custemTable alloc] initWithNibName:@"custemTable" bundle:nil ]; 
NSString selectedCellText=((custemCell)[tableView cellForRowAtIndexPath:indexPath]).THNameLabel.text; 
cll=(custemCell)[tableView cellForRowAtIndexPath:indexPath]; 
cll.backgroundLabel.backgroundColor=[UIColor ]; 
[backgroundSelectedCell release]; 
backgroundSelectedCell=nil; 
table.showingTill=selectedCellText; 
[email protected]"..."; 
selectedCellText=nil; 
[self.navigationController pushViewController:table animated:YES]; 
[table release]; 
table=nil; 

le vrai problème que lorsque l'application démarre l'allocation de mémoire soit 1,56 M et lorsque je sélectionne une cellule et pushViewController fonctionne la mémoire becaome 2,8 M et quand je reviens la mémoire rester sur la plage de 2,8 M (environ 2,7 ou 2,6 parfois) pour savoir .. il n'y a pas de fuite de mémoire et j'ai été relese tout ce que je alloue ou conserver ou copier et je ne sais pas faire !!!

Répondre

1

Je dirais qu'il y a quelque chose d'autre dans votre application qui fuit cette mémoire.

Pouvez-vous coller plus de votre code, y compris comment vous instanciez * table?

De même, vous ne devriez pas vous fier aux valeurs retainCount pour déterminer si un objet fuit ou non. Le système conservera également les objets dont il a besoin et les relâchera quand ils ne sont plus nécessaires, et votre retainCount sera toujours affecté par cela.

En règle générale, si vous allouez, conservez ou copiez un objet, il est de votre responsabilité de le libérer. Tout le reste est traité par le système et sera vidé avec le pool de libération automatique.

+1

Pourriez-vous éditer la question avec le code – Rog

+0

Dear Rod ..le code a été utilisé pour initier la table est custemTable * table = [[custemTable alloc]; initWithNibName: @ "custemTable" bundle: nil]; NSString selectedCellText = ((custemCell) [tableView cellForRowAtIndexPath: chemin d'index]). THNameLabel.text; cll = (custemCell) [tableView cellForRowAtIndexPath: chemin d'index]; cll.backgroundLabel.backgroundColor = [UIColor]; [version backgroundSelectedCell]; backgroundSelectedCell = nil; table.showingTill = selectedCellText; table.title = @ "..."; selectedCellText = nil; [self.navigationController pushViewController: table animée: OUI]; [communiqué de table]; [table = nil; – Adel

+0

Il n'y a pas de fuite de mémoire dans ce code. Il se peut qu'il y ait quelque chose d'autre qui fuit la mémoire à l'intérieur de votre instance customTable. – Rog

0

le code a été utilisé i pour lancer la table est

custemTable * table = [[custemTable alloc] initWithNibName: @ paquet "custemTable": nil]; NSString selectedCellText = ((custemCell) [tableView cellForRowAtIndexPath: chemin d'index]). THNameLabel.text; cll = (custemCell) [tableView cellForRowAtIndexPath: chemin d'index]; cll.backgroundLabel.backgroundColor = [UIColor]; [version backgroundSelectedCell]; backgroundSelectedCell = nil; table.showingTill = selectedCellText; table.title = @ "..."; selectedCellText = nil; [self.navigationController pushViewController: table animée: OUI]; [communiqué de table]; table = néant; Le vrai problème que quand l'application commence l'allocation de mémoire être 1.56 M et quand je sélectionne n'importe quelle cellule et le pushViewController travaille la mémoire en devenant 2.8 M et quand je reviens la mémoire rester sur la gamme de 2.8 M (environ 2.7 ou 2.6 parfois) pour savoir .. il n'y a aucune fuite de mémoire et j'ai été relese tout ce que j'alloue ou conserve ou copie et je ne sais pas ce que je peux faire !!!

+0

Laissez le système prendre soin de décharger les vues et de libérer de la mémoire quand cela est nécessaire. Tant que vos méthodes -dealloc et -viewDidUnload fonctionnent correctement, cette vue sera désallouée et la mémoire sera libérée si nécessaire. – Rog

+0

ya ya Rog .. j'ai fait tout pour relese composants et IBOutlets dans la méthode -dealoc et j'ai affirmé qu'il entrer là..mais je ne sais pas pourquoi il y a toujours le même problème. !! – Adel