2012-05-10 37 views
0

我试图添加一个对象到NSMutableArray它似乎得到重复。对象变得重复在NSMutableArray

@interface TestObject : NSObject { 
    double a_actual; 
    double a_target; 
} 
@property(assign) double a_actual; 
@property(assign) double a_target; 

创建一些指点:

NSMutableArray * myTestObjectArray; 
TestObject * myTestObject; 

初始化它们:

myTestObjectArray = [[NSMutableArray alloc] init]; 
myTestObject = [[TestObject alloc] init]; 

我增加价值的对象,并将其添加到阵列:

[myTestObject setA_actual:234]; 
[myJointDataArray insertObject:myTestObject]; 

我添加每个对象都有不同的值,但我不是总是把所有的变量填满。 当我打印每个对象时,出于某种原因,我在所有对象中都有相同(最后一个)的值。

打印阵列表明,所有的对象都是相同的:

Array: (
    "<TestObject: 0x6b9b400>", 
    "<TestObject: 0x6b9b400>", 
    "<TestObject: 0x6b9b400>", 
    "<TestObject: 0x6b9b400>", 
    "<TestObject: 0x6b9b400>", 
    "<TestObject: 0x6b9b400>") 

我应该ALLOC的TestObject每次我想用一个新的工作的一个新对象?

回答

3

我应该每次分配一个TestObject的新对象,我想用新的?

是的。如果你不分配一个新的对象,你只是一遍又一遍地处理同一个对象。看起来你想要多个不同的对象,所以为每个对象分配一个新的实例。

1

你基本上是添加相同的对象。如果您检查数组中每个对象的“a_actual”的值,则会看到它是相同的。 您应该分配一个新的并添加它

2

为了让它更清楚为什么它失败了,请考虑insertObject:将一个指向对象的指针作为参数。因此,当您将insertObject:消息发送到您的阵列时,它将存储指向该对象的指针,而不是该对象本身的副本。这就是为什么你必须分配/初始化它的一个新实例。