Xcode向NSMutableArray添加多个对象取代了之前的对象

时间:2015-10-30 19:04:25

标签: object replace nsmutablearray

继续在这里找到类似的问题,但无法找到这个问题

我想将几个对象放入NSMutableArray中,当然能够检索它们。

我可以将单独的字符串(第一行,第二行等)放入数组(作为对象),并且可以在调试器中看到它们都被存储 - 也可以检索它们。

(我实际上并不需要把这些单独的字符串放进去 - 我只需要放入我的" Person"对象。只是觉得它可以帮助我看看哪些方面有效在NSMutableArray中继续前进)

aPerson.firstName = @"Jasper"; // Should be sixth        
aPerson.lastName = @"John";        

[myArray addObject:aPerson];  

当我将一个对象放入同一个数组时,它会很好。

aPerson.firstName = @"Izzie";// Should be seventh         
aPerson.lastName = @"TheKitty";        
[myArray addObject:aPerson];        

aPerson.firstName = @"Roxie";        
aPerson.lastName = @"The Pup";        
[myArray addObject:aPerson];        // Should be eighth

在调试器中停止在上面的点时,我看到" Jasper John" NSMutableArray中的Person对象中的info .... 但是当我将另一个对象放入NSMutableArray时,它会替换最后一个对象 - 它就像我没有通过NSMutableArray前进那样。

{{1}}

当在上面停下来时,我只是得到了#Ro; Roxie The Pup"对于NSMutable数组中的所有3个对象 - 虽然我原来的5个字符串仍然在开头填满了桶。

1 个答案:

答案 0 :(得分:0)

哦,明白了!

当我添加对象时,我真的在对象中添加了一个POINTER 因为我正在使用' aPerson'对象,就编译器而言,我只是简单地改变了同一个对象的内容。每次我做addObject

时,我都在更新该指针的内容
Person *aPerson2 = [[Person alloc] init];    
aPerson2.firstName = @"Izzie";// Should be seventh
aPerson2.lastName = @"TheKitty";
[myArray addObject:aPerson2];

Person *aPerson3 = [[Person alloc] init];

aPerson3.firstName = @"Roxie";// Should be eightth
aPerson3.lastName = @"The Pup";
[myArray addObject:aPerson3];