【问题标题】:Xcode adding more than one object to NSMutableArray replaces previousXcode 向 NSMutableArray 添加多个对象替换了之前的
【发布时间】:2015-10-30 19:04:24
【问题描述】:

在这里不断寻找类似的问题,但找不到这个

我想把几个对象放入一个 NSMutableArray 中,当然可以检索它们。

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

(我实际上不需要放入这些单独的字符串 - 我只需要放入我的“Person”对象。只是认为它可能会帮助我了解在 NSMutableArray 中前进方面的工作)

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

NSMutableArray *myArray = [[NSMutableArray alloc] init];        
[myArray addObject:@"First line"];        
[myArray addObject:@"Second line"];        
[myArray addObject:@"Third line"];        
[myArray addObject:@"Fourth line"];        
[myArray addObject:@"Fifth line"];        

当我将一个对象放入同一个数组中时,它会正常运行。

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

[myArray addObject:aPerson];  

在调试器中,当在上述位置停止时,我在 NSMutableArray 的 Person 对象中看到“Jasper John”信息 …… 但是当我将另一个对象放入该 NSMutableArray 时,它会替换最后一个对象 - 就像我没有通过 NSMutableArray 推进的对象一样。

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

当在上述点停止时,我只得到 NSMutable 数组中所有 3 个对象的“Roxie The Pup”——尽管我最初的 5 个字符串仍然在开始填满桶。

【问题讨论】:

  • 顺便说一句 1 - 我没有做下面的人做的事情 - 谁在重复重新初始化他的 NSMutableArray stackoverflow.com/questions/11808720/… 2 - 我确实为我在关联的 .h 文件中使用的 NSMutableArray 声明了一个属性这个测试 3- 我的测试在标准 viewDidLoad 方法中运行

标签: object replace nsmutablearray


【解决方案1】:

哦,明白了!

当我添加我的对象时,我实际上是在向对象添加一个指针 而且由于我使用的是“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];

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多