分析iPad项目中的内存泄漏

时间:2012-02-01 11:22:48

标签: ios objective-c memory-leaks nsmutablearray

我已经创建了一个ipad应用程序,现在我正在使用Instruments进行一些测试,以发现内存泄漏和其他问题。

我发现了一些漏洞,但我无法理解为什么它们被认为是内存泄漏...有人可以帮我理解吗?

NSMutableArray *secondArray = [NSMutableArray arrayWithArray:firstArray];

为什么这是内存泄漏?它不会创建一个自动释放的阵列吗?

3 个答案:

答案 0 :(得分:3)

arrayWithObjects会产生一个自动释放的数组,但arrayWithArray会在firstArray中保留secondArray,之后不会释放firstArray

答案 1 :(得分:2)

确实如此!但是firstArray怎么样?你将它保留在secondArray中而不复制它。所以你应该像这样发布firstArray

NSArray *firstArray = [NSArray alloc] init];

...

NSMutableArray *secondArray = [NSMutableArray arrayWithArray:firstArray];
[firstArray release];

答案 2 :(得分:0)

好吧,我仍然写下我的答案。

此行没有内存泄漏。您创建secondArray并指向firstArray中的相同对象。 arrayWithArray返回自动释放的对象,因此您不必释放它。

但我想分析器说这里有一个潜在的情况,当你有一个指向一个对象的多个指针。当你释放firstArray时,secondArray将引用未定义的内存。它可以导致SIGABRT。