在我的「connect4」風格的遊戲中,我有一個代表7x6網格的數組,數組中的每個「單元格」都包含NSNull或UIView子類'CoinView'。以下是從NSMutableArray和主視圖中刪除對象的正確方法嗎?正確地從視圖和數組中刪除對象?
- (IBAction)debugOrigin:(id)sender {
int x = 0;
int y = 0;
//get the coin object form the grid
CoinView *coin = [[grid objectAtIndex:x] objectAtIndex:y];
//cancel if there's no coin there
if ([coin isKindOfClass:[NSNull class]]) { return; }
//remove the coin from memory
[coin removeFromSuperview];
coin = nil;
[[grid objectAtIndex:x] setObject:[NSNull null] atIndex:y]; //will this leak?
}
謝謝!
如果你使用ARC,這應該沒問題。使用[array setObject:atIndex]將從數組中移除任何先前的對象,並在幕後自動釋放它。如果CoinView被保存到其他任何地方,它仍然存在 - 但由於這種性質,它不是泄漏,因爲某些東西仍然會引用它 – CrimsonDiego