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 回答