如何解决“潜在泄漏”问题

时间:2012-01-24 13:44:23

标签: objective-c ios memory-leaks

我正在使用xcode中的'analyze'工具来检查我的应用程序中是否有潜在的泄漏。

我收到了以下警告。

enter image description here

如何解决上面显示的潜在泄漏? “self.answerArray”只是我在头文件中声明的数组

enter image description here

2 个答案:

答案 0 :(得分:1)

你在数组上调用mutableCopy(它返回一个保留计数为+1的新数组 - 你拥有它),并将它分配给一个属性(我认为它是一个强大/保留并且你没有发布它。你正在泄露记忆。

您应该在将tempArray分配给属性后释放dealloc,并确保在您的班级“{{1}}方法中发布该属性。

答案 1 :(得分:0)

您应该将retain / release发送到answerArray(在分配新对象之前释放旧对象,保留新对象),或者,更好的是,声明属性

@property (retain) NSArray* answerArray;

这样编译器会为你生成release / retain(on assign)。见documentation。否则,对象answerArray在赋值之前引用(answerArray = tempArray)将保持在内存中。

如果您将使用声明的属性,请确保将您的临时变量添加到自动释放池:

tempArray = [[self.answerArray mutableCopy]autorelease];

或者直接发送它(在它超出范围之前)。