プロパティはメソッドのgetterおよびsetterに面しており、self.dateformatorを介して呼び出すと、オブジェクトと自己生成のgetterおよびsetterの名前付け(setPropertyおよびgetProperty)を合成した場合に、プロパティが呼び出されます。
あなたの場合、最初の行はプロパティではありません。コードの2行目では、プロパティのgetterメソッドとsetterメソッドを使用しているときに、クラスのiVarに直接アクセスしています。
今あなたの質問は違いは何ですか、
違いは、iVarアクセス(最初の行)では、オブジェクトを手動で解放する必要があり、保持カウントが1増加し、割り当てられたメモリがそれに関連付けられることです。self.propertyにある間、メモリが割り当てられますが、アップルのプロパティ管理がこれを行うため、新しいブロックが変数に割り当てられます。ただし、保持カウントは再び同じになります。
そのため、メモリのブロックが失われます。
ここで、オブジェクトのプロパティを使用するのが良いアプローチであるという有益なことを伝えたいと思います。インターフェイスファイルのプロパティ属性にretainを書き込んだ場合、メモリ管理はコンパイラ側で行われますが、書くことを忘れないでください。 Deallocメソッドでリリースします。ここに書き込みがあるコード行の場合は、次のようになります。
self.someProperty = [[NSArray alloc] init];
として使用
NSArray* arr = [[NSArray alloc] init];
self.someProperty = arr;
[arr release];
これで、保持カウントは1つと同じになり、どこでリリースするかは気になりません。書き込みを行うと、deallocメソッドで自動リリースされます。
以前に書いたものについては、オブジェクトを解放する必要がある場所を追跡する必要があります