ios – UICollectionView对单元格的迭代 – 内存警告

ios – UICollectionView对单元格的迭代 – 内存警告,第1张

概述在做了一些调试之后,我发现以下代码使我的应用程序的内存使用量不断增长,直到应用程序崩溃.当我启动应用程序时,内存使用量约为2MB,然后当我继续前后滚动时,它会继续增长.当我停止滚动一秒钟时,内存使用量会减少(但并不严重,例如从50M到35M).请看看为什么我有: 这发生在我的自定义UICollectionViewController子类中: for (myAppCell *cell in [sel 在做了一些调试之后,我发现以下代码使我的应用程序的内存使用量不断增长,直到应用程序崩溃.当我启动应用程序时,内存使用量约为2MB,然后当我继续前后滚动时,它会继续增长.当我停止滚动一秒钟时,内存使用量会减少(但并不严重,例如从50M到35M).请看看为什么我有:

这发生在我的自定义UICollectionVIEwController子类中:

for (myAppCell *cell in [self.collectionVIEw visibleCells]){    UILabel *label [[UILabel alloc] initWithFrame:CGRectMake(10,10,cell.frame.size.wIDth,cell.frame.size.height)];    label.text = @"Hello World!";    [cell.contentVIEw addSubvIEw:label];}

现在,这是我在调试时所做的观察:

>如果我评论for块内的所有代码,并且来回滚动无限时间,应用程序内存稳定在2.1MB(在这种情况下它继续循环但实际上没有任何内部 – 因此问题必须是UILabel的分配).
>我试图检查集合视图和单元格的子视图计数,它们分别是14和1(因为它应该是 – 所以问题不在于我相信的子视图的积累).
> ARC正在开启.
>编辑:实际上,只有当我将UILabel添加到单元格时才会出现问题.当我评论最后一行([cell.contentVIEw addSubvIEw:label)时,应用程序也正常运行.因此必须是这条线.
>编辑:顺便说一下,一旦它们不可见,我就不会删除它们(我不知道该怎么做,如果我真的需要这样做,我对iOs编程很新).

现在我没有发布代码的重新生成,因为正如我所说,当我注释掉内部块时,应用程序正常运行 – 也就是说,它创建了我的单元格,当我滚动时没有问题(内存保持在2.1MB).

可能是什么问题呢?

编辑

此代码位于我的CustomCollectionVIEwController的reloadData方法中.它是从scrollVIEwDIDEndDecelerating方法调用的.

解决方法 因为无论何时滚动集合视图,都会一次又一次地将UILable添加到该视图中.这会增加记忆力.您可以在添加新视图之前从该单元格中删除所有现有视图.

使用此代码删除所有子视图

[[cell.contentVIEw subvIEws]     makeObjectsPerformSelector:@selector(removeFromSupervIEw)];
总结

以上是内存溢出为你收集整理的ios – UICollectionView对单元格的迭代 – 内存警告全部内容,希望文章能够帮你解决ios – UICollectionView对单元格的迭代 – 内存警告所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1055271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存