NSMutablearray的最后一个元素被破坏,并成为自定义对象的标准NSObject

时间:2012-02-15 12:13:04

标签: objective-c ios nsmutablearray

今天我遇到了一个N​​SMutableArray的奇怪问题。 我正在解析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,最后一排,还有热潮!我尝试读取name属性时的EXC_BAD_ACCESS。

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

1 个答案:

答案 0 :(得分:0)

在同事的帮助下,我发现了正在发生的事情。 我在解析器的dealloc中释放了我的currentParsedItem,所以在[parser release]之前一切正常;但在那之后,我的可变数组中最后一个对象的“currentParsedItem”在解析器的dealloc函数中被设置为nil,最后我得到了一个空白的NSObject

希望这个提示可以帮助其他人解决类似问题!