コードを書くほど、迷子になります... obj-cの基本を理解するのに時間を無駄にしないように、私(および他の人)のメモリ管理専用のトピックを作成することにしました...次のように更新します新しい質問があります!
以下にいくつかの例を示します。
// myArray is property (retain)
myArray = otherArray;
//myArray isn't a property
myArray = otherArray;
//myArray is a property (retain)
myArray = [[NSArray alloc] init];
//myArray isn't a property
myArray = [[NSArray alloc] init];
---つまり、私が理解している場合... self.myArrayを配置するときは、Xcodeにゲッターまたはセッターを使用するように指示しますが、myArrayを実行するときは、すべての責任がありますよね?
[解決済み]UPDATE1:違いはありますか:
//myArray is a property
myArray = otherArray; // it is only a reference, releasing otherArray will imply releasing myArray
self.myArray = otherArray; // otherArray is sent a retain message so releasing otherArray will still keep myArray in memory
---はい、違いがあります(上記のコメントを参照)
[解決済み]UPDATE2:以下のmyArrayはnilに等しいですか?
NSArray *myArray;
---久美:はい、nilに等しいです。
[解決済み]UPDATE3: 2回の保持にカウントされますか?1つは自己から保持し、もう1つは割り当てから保持しますか?これはメモリリークですか?
self.myArray = [[NSArray alloc] init];
---久美:はい、これはメモリリークです!
[解決済み]UPDATE4:プロパティがすべてを処理しますか?割り当てたり解放したりする必要はありませんか?
self.myArray = [NSArray array];
---ここでは、配列が適切に保持されるようにセッターを使用します
[解決済み]UPDATE5:これら2つのブロックは同じですか?
//myArray is a retained property
self.myArray = [NSArray array]; //retain
self.myArray = nil; //release and set to nil
myArray = [[NSArray alloc] initWithArray]; //retain
self.myArray = nil; //release and set to nil
---久美:はい、同じです
時間をありがとう。
ゴティエ。