1

私は現在、次のようなもので 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 ループを使用しています。

4

1 に答える 1

2

このコード スニペットはまったく問題ないように見えます。問題はあなたの-initWithSuit:value:方法にある可能性があります — 誤ってカードを誤って初期化していないかどうかを確認します.


編集:質問者が投稿したばかりの init メソッドも問題ないようです。最後のオブジェクトだけが 52 回追加されたと思わせる正確な出力は何ですか? 配列をどの程度正確に調べていますか?(あなたのコメントは、NSEnumerator を使用していると言っていますが、質問を編集して、そのために使用しているスニペットを含めることはできますか?

于 2009-08-18T21:12:39.607 に答える