2009-07-31 15 views
0

私は私のコードでは、私はこのNSMutableArrayを解放する必要があり、なぜ私は、そのオブジェクトを解放したいんとき、なぜオブジェクトを解放する

NSMutableArray * NewsFeedArray; 
NewsFeedArray = [[[NSMutableArray alloc]init]retain]; 

をこれらの行を使用していますか?私のプロジェクトでは、私はdeallocメソッドでオブジェクトをリリースしましたが、それを行うにはもっと時間がかかります。

誰でもこれを説明できますか?

答えて

0

NewsFeedArrayに追加したオブジェクトを追加した直後に解放します。あなたがそれらを配列に追加するという事実は、保持カウントを1つ上に上げます。配列はそれらを所有しています。配列を解放すると、その配列に含まれるすべてのオブジェクトの保持カウントが1つ減少します(一般に解放されます)。

3
NewsFeedArray =[[[NSMutableArray alloc] init] retain]; 

このコード行は、実際にあなたのオブジェクトのは、おそらく、なぜあなたはそれが予想される場合、完全に解放されていないオブジェクトを経験しているされて2までカウントを保持バンプ。

0

あなたは(おそらくあなたinit方法で)起動するときは、このようなものが必要:あなたはそれを保持する必要はありません

NSMutableArray* news = [[NSMutableArray alloc] initWithCapacity:10]; 

注意。

ものを追加するには:

RandomObject* obj = [[RandomObject alloc] init]; 
// set properties 
[news addObject:obj]; 
[obj release]; 

あなたは、配列が、参照カウントを増加に追加するように、新しいオブジェクトを解放することができます。

そして最後に、あなたはあなたのdealloc方法で次のように置く:

[news release]; 

は、アレイが自動的にそれを保持しているすべてのオブジェクトを解放します放します。

関連する問題