2010-11-20 4 views
0

I utilisés codes ci-dessous et régler le point d'arrêt à a1, a2NSMUrableArray alloc et init

NSMutableArray *aArray; 

.....

@property (nonatomic,retain) NSMutableArray *aArray; 

......

NSMutableArray* a=[[NSMutableArray alloc]init] ; 


for(int i=1;i<=31;i++) 
    [a addObject:[NSNumber numberWithInt:i]]; 
aArray=a; 


[a release];// a1 

int i=0;// a2 

la quantité d'objets dans aArray est 31 mais après la ligne [une version], le montant passe à 0

Comme je sais que 'release' ne fait que conserver le compteur -1, mais pourquoi il supprime également tous les objets dans le MutableArray?

WELCONE tout commentaire

Merci

InterDev

Répondre

0

utiliser l'instruction suivante;

aArray = [a retenir];

Si vous utilisez retain, aArray ne changera pas.

1

Avec [a release], le compte de référence pour le tableau devient 0 et, par conséquent, le tableau sera désallouée. Lorsque cela se produit, le tableau supprime tous les objets de son contenu afin de les libérer (parce qu'il les a conservés avant lorsqu'ils ont été ajoutés au tableau).

Questions connexes