[英]Adding an object to a NSMutablearray doesn't work properly
我有一種情況,我試圖在循環中向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;
}
您的-init
方法永遠不會初始化您的類。 致電[super init]
。
-(id)init {
self = [super init];
if (self) {
imageNumber = (arc4random() % 11) + 1;
isInCase = false;
}
return self;
}
您的代碼可能應該像這樣,
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.