0

ループ内でオブジェクトをNSMutableArrayに追加しようとしている状況があります。ループの最後に、54個のオブジェクト(例として)が配列に追加されていることを示していますが、配列からオブジェクトを読み取ろうとすると、明らかにそれらはすべて互いに同じであり、最後のものと同じです配列に挿入されるオブジェクト。

誰かがこの問題で私を助けてくれませんか?これは私のコードです:

int counter=0;

for (int j=0; j<rows; j++) 
{      
     Product *product ;
     product = [[Product alloc] init];
     int numberr= [product getImageNumber];
     [wineList addObject:product];
     counter = counter + 1;  
}

オブジェクトを追加した後、配列のコンテンツをテストしていますが、配列内の各アイテムに対して同じ結果が得られています

//testing
Product *producttest1 = wineList[1];
int numbertest1= [producttest1 getImageNumber];
Product *producttest2 = wineList[20];
int numbertest2= [producttest2 getImageNumber]; 

Productこれは私が持っているクラスの定義です:

#import "Product.h"
@implementation Product

int imageNumber;
bool isInCase;

-(id) init {
    imageNumber = (arc4random() % 11) + 1;

    isInCase = false;

    return self;
}

-(int) getImageNumber {

    return imageNumber;
}

-(void) setImageNumber:(int) number {

    imageNumber = number;
    }
4

2 に答える 2

1

-initメソッドがクラスを初期化することはありません。に電話をかけ[super init]ます。

-(id)init {
    self = [super init];

    if (self) {
        imageNumber = (arc4random() % 11) + 1;
        isInCase = false;
    }

    return self;
}
于 2012-10-10T14:07:12.147 に答える
0

あなたのコードはおそらくこのようになるはずです、

int counter=0;
for (int j=0; j < rows; j++) 
{      
     Product *product = [[Product alloc] init]; // Added variable declaration inside.
     int numberr= [product getImageNumber];
     [wineList addObject:product];
     [product release];                         // Added release for product
     counter = counter + 1;  

}
于 2012-10-10T13:35:27.000 に答える