多维数组是否会占用内存,如何释放内存

时间:2015-04-25 05:10:06

标签: ios objective-c memory multidimensional-array

我有一个复杂的tableview。目标C

为了在每个单元格中填充多个标签,我有一个由2个NSMutableArrays组成的多维表(1个嵌入在另一个中)。结果是一个每行有3列的数组。

释放我用过的内存 [arrayname removeAllObjects];

我可以说的是,这绝对没有。

这个数组(每行只有大约130个字符的数据,在这个样本数据中我只有30行)就像病毒一样,最喜欢的食物就是记忆。就像没有明天一样吃了50毫克的大块。

removeAllObjects没有做什么来恢复内存。

我已经搜索过高和低,并且在使用NSMutableArrays时找不到释放内存的明确方法,而且多维数据库似乎是cookie怪物。

最后我删除了多维数组并且只构建了一个NSMutableArray,它只是连接成一个字符串的所有数据,然后我在需要时将这三个数据分包出来。

记忆恢复正常。

这可能不是理想的解决方案。有没有人找到一种释放NSMutableArrays内存的明确方法?

3 个答案:

答案 0 :(得分:0)

如果我们知道您使用的语言会有所帮助。如果您正在用C语言写作,请致电

free(<array pointer>);

答案 1 :(得分:0)

最后我删除了多维数组并且只构建了一个NSMutableArray,它只是连接成一个字符串的所有数据,然后我在需要时将这三个数据分包出来。

记忆恢复正常。

这可能不是理想的解决方案,但它有效

答案 2 :(得分:0)

多维NSMutableArray很不寻常,但受到支持。它可能不会像你期望的那样工作;它确实是一个数组数组。在许多语言中,&#34; 2D&#34;数组实际上是乘法函数的包装器。这很重要,因为使用NSMutableArray,每个子数组可能有不同的长度,您需要初始化和管理每个子数组。

但是使用ARC,内存处理得很好。你的代码中只有一个错误。您可能要么将某个子阵列保留在您并不意味着的位置,要么您还没有等待自动释放池耗尽。但不管怎样,Cocoa中的数组数组都很好。