NSArray到CALayerArray

时间:2011-09-14 20:23:24

标签: iphone memory nsarray

我遇到了问题,我无法弄清楚发生了什么

我有一个tableview,我有一个属性名称newsData。 我设置了一切,工作正常! 然后在模拟器中,我调用内存警告,看看应用程序是如何工作的。 我可以看到tableview正在发布,当我回调viewdidload时,我可以看到这个数组现在是类CALayerArray! 当我尝试访问它时,我的程序崩溃了!

发生了什么事? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

您是否在viewdidload调用中重新分配了tableview?发布后你需要这样做。您可能希望在释放后将tableView设置为nil,以避免崩溃(这仍然需要您在释放后重新分配并初始化tableView!)

 [tableView release];
 tableView = nil;

澄清:我不是说,你需要在释放之后设置任何对象为零!但在发布之后,你应该知道对象已经被释放了!

答案 1 :(得分:0)

根据代码的不同,有很多可能的原因。首先,当你说“我有一个tableview并且我有一个属性名称newsData”时,我很困惑。 newsData属于哪个对象?您是否将UITableView分类,或者您的意思是这是您UITableViewDataSource的ivar?

什么是newsData?这听起来应该是NSData,但你是说它是NSArray吗?

您应首先审核您指定newsData的所有位置。在大多数情况下,我会说你将它分配给不返回NSArray的东西。我怀疑在这种情况下因为CALayerArray是私有的。这看起来更像是你正在访问用于其他东西的内存。我会检查你的内存警告代码和你的viewDidUnload:代码并运行静态分析器作为开始。