NSMUrableArray alloc和init

时间:2010-11-20 11:44:42

标签: iphone

我使用下面的代码并将断点设置为a1,a2

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

我知道'release'只会使retain计数器为-1,但为什么它也会删除MutableArray中的所有对象?

Welcone任何评论

由于

interdev

2 个答案:

答案 0 :(得分:1)

使用[a release],数组的引用计数变为0,因此,数组将被释放。当发生这种情况时,数组会从其内容中删除所有对象以释放它们(因为它在将它们添加到数组之前保留了它们)。

答案 1 :(得分:0)

使用以下声明;

aArray = [保留];

如果使用retain,则aArray不会更改。