私はいくつかのオープンソースコードを見て、作者が特定の方法で何かをした理由を理解しようとしています。
このクラスは、NSArray
push、popなどのスタックデータ構造を作成するためのラッパーです。
1つのメソッドはtopObject
、スタックの最上位のオブジェクトを返す方法であり、その実装は次のとおりです。
- (id)top {
return [[[stack lastObject] retain] autorelease]; // stack is an instance of NSMutableArray
}
保持とそれに続く即時自動リリースとは何ですか?
私の最初の反応は、これによりアナライザーがメモリリークについて警告するのを防ぐことができるというものでしたが、保持/自動解放なしで分析しましたが、それでも警告はありませんでした。
ライフサイクルを見ると、オブジェクトが作成され、スタックにプッシュされて解放されるため、スタックがオブジェクトを所有します(基になる配列は追加時にオブジェクトを保持します)。
だから私はここで保持/自動解放の使用法を理解していません...