2009-08-18 82 views
1

我公司目前正在努力填補和NSMutableArray裏像這樣的東西:關於產品的NSMutableArray

deck = [[NSMutableArray alloc] initWithCapacity:52]; 
for (int suit = 0; suit <= 3; suit++) { 
    for (int value = 1; value <= 13; value++) { 
    ANormalCard *card = [[ANormalCard alloc] initWithSuit:suit value:value]; 
    [deck addObject:card]; 
    [card autorelease]; 
    } 
} 

現在的問題是,當我走在陣列上,只有最後一個對象創建數組中52X。任何想法我做錯了什麼?


編輯:

的-initWithSuit看起來是這樣的:

- (id) initWithSuit:(int)suit value:(int)val { 
    if ((self = [super init])) { 
     theSuit = suit; 
     theValue = val; 
    } 
    return self; 
} 

我使用NSEnumerator * enumerator = [deck objectEnumerator];和while循環遍歷數組。

+0

確保initWithSuit:value:不總是返回同一個對象 – cocoafan 2009-08-18 20:45:16

+0

我不' t認爲我理解了這個問題 - 最後一個對象有什麼問題? – 2009-08-18 20:46:15

+2

這段代碼看起來很好,你的實際代碼有什麼不同嗎?你可以發佈initWithSuit的代碼:value:? – grahamparks 2009-08-18 20:46:33

回答

2

此代碼片段看起來非常好。這個問題很可能在你的-initWithSuit:value:方法中 - 我會檢查你是否意外地錯誤地初始化卡片。


編輯:剛剛發佈由提問者init方法看起來不錯,以及。你看到的確切輸出是什麼,導致你相信只有最後一個對象被添加了52次?你究竟如何檢查數組? (你的評論說你使用的是NSEnumerator,但是你可以編輯你的問題以包含你正在使用的代碼片段嗎?

+0

-initWithSuit看起來像這樣: - (id)initWithSuit:(int)套裝值:(int)val if((self = [su每個init])) { theSuit = suit; theValue = val; } return self; } – eemceebee 2009-08-19 06:41:46

+0

我將它添加到您的問題。 – 2009-08-19 16:10:16