每個人。我的「engrish」不是很好,但我希望你能理解我的問題。在循環中聲明一個指針
比方說,我有這樣的
-(id) init
{
if (self = [super init])
{
deck = [[NSMutableArray alloc] initWithCapacity:52];
Card *newCard = [[Card alloc] init];
for (int suit = 0; suit < 4; suit++)
for (int rank = 0; rank < 13; rank++)
{
newCard.suit = suit;
newCard.rank = rank;
[deck addObject:newCard];
}
[newCard release];
}
return self;
}
我感覺像我在前面提到的代碼錯誤代碼。我想在嵌套循環中創建52個不同的對象並添加數組中的每個對象。但我懷疑我會有52個相同的對象,並在數組中將52指針指向相同的地址,對不對?
如果我這樣做,會發生什麼。
-(id) init
{
if (self = [super init])
{
deck = [[NSMutableArray alloc] initWithCapacity:52];
for (int suit = 0; suit < 4; suit++)
for (int rank = 0; rank < 13; rank++)
{
Card *newCard = [[Card alloc] init]; // I guess every time newCard
newCard.suit = suit; // created, it will point to
newCard.rank = rank; // another chunk of memory,
[deck addObject:newCard]; // right?
[newCard release] // Should I release newCard every time?
}
}
return self;
}
那麼我可以創建52個不同的卡片? 謝謝。如果您需要更多解釋,請問我。
你嘗試運行它,並使用的NSLog到打印出甲板的結果?即'NSLog(「%@」,deck);'。 - 你是對的,雖然 – gaige 2013-03-27 09:45:35
如果你不使用ARC,那麼是的 - 你需要釋放它。 – Eimantas 2013-03-27 09:47:12
請使用ARC;)你不能做得更好。 – HAS 2013-03-27 09:53:21