2010-08-05 4 views
0

Voici mon code:problème de mémoire objc à des réseaux

 NSLog(@"rc: %d", [_pagesButton retainCount]); 
     NSMutableArray *anArray = [[NSMutableArray alloc] initWithArray:_toolbar.items]; 
     NSLog(@"rc: %d", [_pagesButton retainCount]); 
     [anArray removeObjectAtIndex:2]; 
     NSLog(@"rc: %d", [_pagesButton retainCount]); 
     [_toolbar setItems:anArray animated:YES]; 
     NSLog(@"rc: %d", [_pagesButton retainCount]); 
     [anArray release]; 
     NSLog(@"rc: %d", [_pagesButton retainCount]); 

et est ici la sortie:
rc: 2
rc: 3
rc: 2
rc: 3
rc: 3

Le premier rc est 2 car le _pagesButton a été retenu par cette variable et par le tableau toolbar.items. Après avoir créé la variable anArray, le nombre de retain est 3, puis je supprime le _pagesButton de la variable anArray pour que le nombre de retain passe à 2. Ensuite, je mets le _toolbar.items et le nombre de retain va à 3. Mais pourquoi ??? Et quand je libère la variable anArray le retaincount encore 3. Pourquoi? S'il te plaît, aide-moi un peu.

Répondre