簡體   English   中英

將對象添加到NSMutablearray不能正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM