这发生在我的自定义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对单元格的迭代 – 内存警告所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)