Ios 对象在NSMutableArray中重复

Ios 对象在NSMutableArray中重复,ios,xcode,nsmutablearray,nsarray,Ios,Xcode,Nsmutablearray,Nsarray,我正试图将一个对象添加到NSMutableArray中,它似乎被复制了 @interface TestObject : NSObject { double a_actual; double a_target; } @property(assign) double a_actual; @property(assign) double a_target; 创建一些指针: NSMutableArray * myTestObjectArray; TestObject * myTestO

我正试图将一个对象添加到
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>" )
数组:(
"",
"",
"",
"",
"",
"" )

每次我想使用新对象时,我是否应该分配TestObject的新对象?

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

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

我是否应该在每次使用新对象时都分配TestObject的新对象

对。如果你没有分配一个新对象,你只是在一遍又一遍地使用同一个对象。看起来您需要多个不同的对象,所以为每个对象分配一个新实例

我是否应该在每次使用新对象时都分配TestObject的新对象


对。如果你没有分配一个新对象,你只是在一遍又一遍地使用同一个对象。看起来您需要多个不同的对象,因此为每个对象分配一个新的实例。

以使您更清楚它为什么失败,请考虑<代码>插入对象:将对象的指针作为参数。因此,当您向数组发送

insertObject:
消息时,它将存储指向该对象的指针,而不是对象本身的副本。这就是为什么你必须将它的一个新实例分配给一个新实例的原因。

为了使它更清楚地说明它为什么失败,请考虑<代码>插入对象:将一个指针作为一个参数。因此,当您向数组发送
insertObject:
消息时,它将存储指向该对象的指针,而不是对象本身的副本。这就是为什么您必须分配/初始化它的新实例