IPhone プログラミングは初めてで、次のメモリ リークの解決に問題があります。
while(numDeckCounter < numDecks){
int cardCounter=1;
for (int i =1; i<=52; i++) {
tempCard = [Card new]; //leaks tool says that this is leaking object
if(i>=1 && i<=13)
{
tempCard.suit = CLUBS;
tempCard.faceValue = cardCounter;
[deckArr addObject:tempCard]; //reference count 2
cardCounter++;
}
else if(i>=14 && i<=26)
{
tempCard.suit = DIAMONDS;
tempCard.faceValue = cardCounter;
[deckArr addObject:tempCard];
cardCounter++;
}
else if(i>=27 && i<=39)
{
tempCard.suit = HEARTS;
tempCard.faceValue = cardCounter;
[deckArr addObject:tempCard];
cardCounter++;
}
else
{
tempCard.suit = SPADES;
tempCard.faceValue = cardCounter;
[deckArr addObject:tempCard];
cardCounter++;
}
if(cardCounter ==14){
cardCounter=1;
}
[tempCard release]; //this causes an EXC_BAD_ACCESS -reference count should be 1
}
numDeckCounter++;
}
配列にオブジェクトを追加すると、その参照カウントが 1 つ増えるという印象を受けました。その後、追加したばかりのオブジェクトを解放しても安全です。なぜなら、配列がバンピングを解放されてから各オブジェクトが解放されるまで割り当てが解除されないからです。配列で。これは、オブジェクトの割り当てを最終的に解除する必要があるときです。
[tempCard リリース] を追加すると、次のようになります。既に割り当てが解除されているため、メモリの場所にアクセスできないため、アプリがクラッシュします。
私が読んだすべてのことから、私が上で言ったことは真実だと思います. 私が間違っている場合は、誰かが私を修正してください。ありがとう。