2012-12-24 44 views
-1

我正在使用NSMutableArray来存储名为poligonon的对象。此对象有一个NSMutableArray as属性来存储坐标X. 但是,当我添加第二个对象时,数组上的第一个对象会自己转换。数组上的所有对象都必须是不同的,但它们与数组中的最后一个对象相同。NSMutableArray替换对象insted添加

例:

coordArrayX是一个属性(NSMutableArray的)

-saveDataIntoArray

{ 
poligonon.coorArrayX = coordArrayX; 
arrayPoligonon addObject: poligonon; 
} 

的第一次用户点击保存,第一坐标是74 现在,他创造一个新的坐标为45的poligonon,并添加到数组中。

当用户检查,第一poligonon已坐标= 45。

如何解决?

+0

你是同一对象(poligonon)重新使用?你几乎必须是。试试:'[arrayPoligonon addObject:[poligonon copy]];'。 – lnafziger

+0

是的。我用同一个对象存储在第一个数组中,并且工作。现在它总是返回最后一个对象数组。我也尝试初始化一个新对象并添加这个对象,稍后发布 –

回答

0

每次将相同的poligonon添加到阵列并覆盖coorArrayX的值时。

相反的,

{ 
    poligonon.coorArrayX = coordArrayX; 
    arrayPoligonon addObject: poligonon; 
} 

试试这个,

{ 
    poligonon = [[Poligonon alloc] init]; 
    poligonon.coorArrayX = coordArrayX; 
    [arrayPoligonon addObject:poligonon]; 
} 
+0

不工作。但是这个poligonon有一个叫做area的属性float。这个变量工作正常,他们不相等。 –

+0

@FelipeBoszczowski,此更改后现在有什么问题?什么是coorArrayX?浮动?地区将工作正常,因为这不是一个指针。其他人是指针,这就是为什么你需要分配一个新的内存。 – iDev