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:
消息时,它将存储指向该对象的指针,而不是对象本身的副本。这就是为什么您必须分配/初始化它的新实例