2010-11-20 2 views
0

Я использовал коды ниже и установить точку останова на a1, a2NSMUrableArray Alloc и инициализации

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 

количество объектов в aArray равно 31 , но в строке [освобождение] сумма изменяется до 0

Как я знаю, «релиз» только делает счетчик -1, но почему он также удаляет все объекты в MutableArray?

Welcone любой комментарий

Благодаря

Interdev

ответ

0

использование нижеследующий отчет;

aArray = [a сохранить];

Если вы используете сохранение, aArray не изменится.

1

С [a release], счетчик ссылок массива становится 0 и, следовательно, массив будет освобождён. Когда это произойдет, массив удаляет все объекты из своего содержимого, чтобы освободить их (потому что он сохранил их до того, как они были добавлены в массив).

Смежные вопросы