NSMutablearray 的最后一个元素损坏,从自定义对象变为标准 NSObject



我今天遇到了一个NSMutableArray的奇怪问题。我正在解析一个XML文件,并将解析后的项添加为自定义对象。共有37项。所以,当我的视图加载时,我这样做,作为一个测试:

[parser loadDataBase];
ProductItem* item = [parser.productDetail.prodItems objectAtIndex:36];
NSLog(@"test 1 %@", item.idItem);
self.product = parser.productDetail;
item = [self.product.prodItems objectAtIndex:36];
NSLog(@"test 2 %@", item.idItem);
[parser release];

在这一点上,一切都很好。两个NSLog都打印可变数组中最后一个项的正确值。

问题是当我试图将这些项目添加到表中时。当应用程序尝试获取索引36处的项目以显示其属性,而不是ProductItem自定义对象时,它会获得NSObject对象。。。最后一个项目的所有内容都丢失了,取而代之的只是一个NSObject。

除了解析器之外,我对该类或任何其他类中的数组都不做任何操作。当它离开解析器时一切都好,当我从解析器中读取它时一切都还好,当我检查是否从解析器中正确获得了所有值时一切都很好。但不知怎的,最后一个值在这之后被破坏了,尽管我没有做任何可能导致这种情况的事情。

这是我在cellForRow:中使用的代码

NSLog(@"index %i", indexPath.row);
ProductItem* item = [self.product.prodItems objectAtIndex:indexPath.row];
cell2.itemName.text = item.name;

这一排是36,最后一排,砰!EXC_BAD_ACCESS。

这里有人知道可能发生的事情吗?我以前从未遇到过这样的问题感谢您的时间和关注!

在同事的帮助下,我发现了发生的事情。我在解析器的dealloc中发布了我当前的ParsedItem,所以在[解析器发布]之前一切看起来都很好;但在那之后,"currentParsedItem"是我可变数组中的最后一个对象,在解析器的dealloc函数中被设置为nil,我最终得到了一个空白的NSObject

希望这条建议能帮助其他有类似问题的人!

最新更新