2011-01-18 10 views
0

私はiPhoneアプリを開発しています。私はObjective-Cのプロパティ

@property NSArray *listData; 
として宣言した場合、私は疑問に思う

[listData release]; 

:、のようなものを置く必要があり、実装ファイルで次にdeallocメソッドを

@property (nonatomic, retain) NSArray *listData; 

:私は以下のようなプロパティを宣言についての本から読んで

私はそれを解放する必要がありますか?それは私のためのコードの1行を保存します。

+1

を参照してください、私は+のリリースを保持するために固執すると思います。私は、コンパイラがプロパティの保持/割り当てビットを指定しないことについてあなたが不平を言うかもしれないと思う。そうでない場合でも、ほとんどの場合、「割り当て」はあなたが望むものではありません。 –

+0

ええ、コンパイラが警告を出す、指定されていない何か、割り当てが使用されます。 OK、プロパティの場合はretain + releaseを使用します。しかし、私的変数については、私はそれらのプロパティを作成しません。プライベート変数を解放する必要はありますか? TIA – vincent

+0

いくつかの読書の後、私は今cm5wを理解しています: 1. NSStringのコピーが使用されます* 2.他のオブジェクトの場合は、保持が使用されます 3.両方がdeallocメソッドで解放される必要があります 4.プリミティブデータ型の場合、assign使用すると、解放する必要はありません – vincent

答えて

-1

はい、リリースする必要があります。 retain修飾子は、プロパティを設定すると、クラスがNSArrayでretainを呼び出すことを意味します。あなたのクラスが完了したら、あなたが保持しているものをリリースする必要があります。そうしないと、メモリリークが発生します。

+0

こんにちは、理解しています。しかし、私が保持を使用しない場合、私はそれを解放する必要がありますか?保持を使用しないと問題はありますか? – vincent

+0

あなたはヴィンセントの質問をしていないようです。 –

-1
@property NSArray *listData; 

はただ暗黙的に(それは限りiPhoneアプリの開発が懸念している深刻なものだ)、listDataプロパティのためのあなたのアクセサとミューテータメソッドを宣言

が、何のメモリ管理についてのでしょうか?

あなたは、実装でそれを使用するつもりなら、あなたはdeallocメソッド

でそれを解放する必要があり、またOfficial Apple docs for @property

関連する問題