この答えは、ARCを使用していないことを前提としています。
最初のコードスニペットは、init以外のメソッドでこれを実行している限り、Appleがプロパティの初期化を推奨する方法です。Appleのコードスニペットがこれを頻繁に行うことに気付くでしょう。それはあなたの記憶を管理することをはるかに簡単にします、そして私の意見ではそれは読みやすくします。
NSArray *tempArray = [[NSArray alloc] initWith....]
self.propertyArray = tempArray;
[tempArray release];
NSArrayの設定方法によっては、2番目のコードスニペットがメモリリークを引き起こす可能性があります。
これはリークになります。propertyArrayの保持カウントは2になります。deallocでインスタンス変数を解放した後も、保持カウントは1になります。これはリークです。
self.propertyArray = [[NSArray alloc] initWith...];
両方とも自動解放されているため、これは問題ありません。これにより、保持カウントが1になります。deallocでインスタンス変数を解放する限り。
// Class Method so autoreleased
self.propertyArray = [NSArray arrayWith....];
// Explicitly declaring autorelease
self.propertyArray = [[[NSArray alloc] initWith.....] autorelease];
それは単に好みの問題です。私は最初の方法を好みます。読みやすく、フォローしやすいと思います。
編集(ARCを使用):
これらのメソッドはすべて、releaseステートメントとautoreleaseステートメントを除いて受け入れられます。
[tempArray release];
ARCが自動的にメモリ管理を処理するため、明示的に解放する必要はありません。これはARCの利点であり、どこでリリースするかを考えるという頭痛の種なしに、必要な数のオブジェクトを作成できます。
また、あなたの財産は異なります。強いか弱いかのどちらかを使用する必要があり、保持しないでください。この場合、強力な解決策になります。
@property (nonatomic, strong) NSArray *tempArray;