我是 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++;
}
我的印象是向数组中添加一个对象会将其引用计数增加一,然后释放您刚刚添加的对象是安全的,因为在释放数组之前不会释放它,然后释放每个对象在数组中。这是对象最终应该被释放的时候。
当我添加 [tempCard release]; 它使我的应用程序崩溃,因为它无法访问内存位置,因为它已被释放。
从我读过的所有内容来看,我认为我上面所说的都是真的。如果我错了,请有人纠正我。谢谢。