继续在这里找到类似的问题,但无法找到这个问题
我想将几个对象放入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个字符串仍然在开头填满了桶。
答案 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];