我使用下面的代码并将断点设置为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
答案 0 :(得分:1)
使用[a release]
,数组的引用计数变为0
,因此,数组将被释放。当发生这种情况时,数组会从其内容中删除所有对象以释放它们(因为它在将它们添加到数组之前保留了它们)。
答案 1 :(得分:0)
使用以下声明;
aArray = [保留];
如果使用retain,则aArray不会更改。