2010-11-20 10 views
0

以下のコードを使用して、a1、a2にブレークポイントを設定します。NSMUrableArrayのallocと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 

オブジェクトの量aArrayは31 ですが、ライン[a release]の場合、量は0に変更されます。

「リリース」を知っているので、保持カウンタは-1になりますが、なぜMutableArrayのすべてのオブジェクトも削除されますか?

任意のコメント

ありがとう

interdev

答えて

0

次の文を使用してください。

aArray = [a保持];

retainを使用すると、aArrayは変更されません。

1

は、配列の参照カウントは0なるため、配列の割り当てが解除されます。これが起こると、配列はすべてのオブジェクトをその内容から削除して(配列に追加する前に保持しているため)、それらを解放します。

関連する問題