2011-09-15 8 views
1

クラスのヘッダにMutableArray rqst_entriesをプロパティとして宣言して合成しました。私は、次のコードを追加のviewDidLoadで :助けるためこれは保持されているか、または自動解放オブジェクトですか?

self.rqst_entries = [NSMutableArray array]; 

それは自動解放すること、多分(deallocをが呼び出される前)以前にそれを解放するために、このIVARを向けるだろう

Thxを、

ステファン

+0

が役立ちます。 – UPT

+1

誰もがこのプロパティのメモリモデルで推測しているので、 'rqst_entries'プロパティをどのように定義するかのコードを追加してください。 – Sam

答えて

5

プロパティをretainまたはcopyのいずれかに定義した場合、それはivarによって保持され、正常になります。一方、あなたのプロパティがassignedであると定義した場合は、[NSMutableArray array]が自動リリースされるため、問題が発生します。

3

あなたの財産がretainまたはcopyの場合はありません。

3

あなたの財産が保持されていれば、あなたは大丈夫です。自動リリースされたオブジェクトをプロパティに割り当てましたが、このアクションはそれを保持しています。

1

[NSMutableArray配列]は、自動解放されたオブジェクトを返します。

みんなの回答は、プロパティrqst_entriesです。基本的には、メモリモデルがretainのプロパティが必要です。 copyを使用する場合がありますが、これは通常は不変型(NSArray、NSStringなど)です。 NSMutableArrayは変更可能です(エントリの追加、エントリの削除、配列内のエントリの変更が可能です)。

あなたが好きなあなたの財産を定義したい:本当に人をトリップ部分がアロケーション/コピーをしている

@property (nonatomic, retain) NSMutableArray *rqst_entries; 

のようなプロパティの割り当てに保持/:この意志ので

self.rqst_entries = [[NSMutableArray alloc] init]; 

リークが続くまでリークしないでください。

[self.rqst_entries release]; 

この場合に割り当てる最も良い方法は、 ocal変数(少なくともスレッドの安全が必要な場合) like:

NSMutableArray *myArray = [[NSMutableArray alloc] init; 
self.rqst_entries = myArray; 
[myArray release]; 

これは非常に簡単な例ですが、その点を説明しています。

関連する問題