我正在使用xcode中的'analyze'工具来检查我的应用程序中是否有潜在的泄漏。
我收到了以下警告。
如何解决上面显示的潜在泄漏? “self.answerArray”只是我在头文件中声明的数组
答案 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];
或者直接发送它(在它超出范围之前)。