我有一个复杂的tableview。目标C
为了在每个单元格中填充多个标签,我有一个由2个NSMutableArrays组成的多维表(1个嵌入在另一个中)。结果是一个每行有3列的数组。
释放我用过的内存 [arrayname removeAllObjects];
我可以说的是,这绝对没有。
这个数组(每行只有大约130个字符的数据,在这个样本数据中我只有30行)就像病毒一样,最喜欢的食物就是记忆。就像没有明天一样吃了50毫克的大块。
removeAllObjects没有做什么来恢复内存。
我已经搜索过高和低,并且在使用NSMutableArrays时找不到释放内存的明确方法,而且多维数据库似乎是cookie怪物。
最后我删除了多维数组并且只构建了一个NSMutableArray,它只是连接成一个字符串的所有数据,然后我在需要时将这三个数据分包出来。
记忆恢复正常。
这可能不是理想的解决方案。有没有人找到一种释放NSMutableArrays内存的明确方法?
答案 0 :(得分:0)
如果我们知道您使用的语言会有所帮助。如果您正在用C语言写作,请致电
free(<array pointer>);
答案 1 :(得分:0)
最后我删除了多维数组并且只构建了一个NSMutableArray,它只是连接成一个字符串的所有数据,然后我在需要时将这三个数据分包出来。
记忆恢复正常。
这可能不是理想的解决方案,但它有效
答案 2 :(得分:0)
多维NSMutableArray
很不寻常,但受到支持。它可能不会像你期望的那样工作;它确实是一个数组数组。在许多语言中,&#34; 2D&#34;数组实际上是乘法函数的包装器。这很重要,因为使用NSMutableArray
,每个子数组可能有不同的长度,您需要初始化和管理每个子数组。
但是使用ARC,内存处理得很好。你的代码中只有一个错误。您可能要么将某个子阵列保留在您并不意味着的位置,要么您还没有等待自动释放池耗尽。但不管怎样,Cocoa中的数组数组都很好。