【发布时间】:2012-01-24 13:44:22
【问题描述】:
我正在使用 xcode 中的“分析”工具来检查我的应用程序中的潜在泄漏。
因此,我收到以下警告。
如何解决上面显示的潜在泄漏? “self.answerArray”只是我在头文件中声明的一个数组
【问题讨论】:
标签: objective-c ios memory-leaks
我正在使用 xcode 中的“分析”工具来检查我的应用程序中的潜在泄漏。
因此,我收到以下警告。
如何解决上面显示的潜在泄漏? “self.answerArray”只是我在头文件中声明的一个数组
【问题讨论】:
标签: objective-c ios memory-leaks
您在数组上调用了mutableCopy(它返回一个保留计数为 +1 的新数组 - 您拥有它),并将它分配给一个属性(我假设它是一个强/保留属性)而你没有释放它。你正在泄漏内存。
您应该在将 tempArray 分配给属性后释放它 - 并确保在您的类的 dealloc 方法中释放该属性。
【讨论】:
您应该将保留/释放发送到 answerArray(在分配新对象之前释放旧对象,保留新对象),或者,最好声明一个属性
@property (retain) NSArray* answerArray;
这样编译器将为您生成释放/保留(在分配时)。见documentation。否则,对象 answerArray 在赋值之前引用 (answerArray = tempArray) 将在内存中保持悬空状态。
如果您将使用已声明的属性,请确保将您的临时变量添加到自动释放池:
tempArray = [[self.answerArray mutableCopy]autorelease];
或者只是发送它自己释放(就在它超出范围之前)。
【讨论】: