我试图将一个对象添加到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的新对象吗?答案 0 :(得分:3)
每次我想使用新的?
时,我应该分配一个TestObject的新对象吗?
是。如果您没有分配新对象,那么您只是一遍又一遍地使用同一个对象。您似乎需要多个不同的对象,因此为每个对象分配一个新实例。
答案 1 :(得分:2)
为了让你更清楚它失败的原因,请考虑insertObject:
将指向对象的指针作为参数。因此,当您将insertObject:
消息发送到您的数组时,它将存储指向该对象的指针,而不是该对象本身的副本。这就是你必须分配/初始化它的新实例的原因。
答案 2 :(得分:1)
您基本上是添加相同的对象。如果检查数组中每个对象的“a_actual”值,您会看到它是相同的。 您应该分配一个新的。