Sha*_*kan 4 memory iphone objective-c ios
在做了一些调试之后,我发现以下代码使我的应用程序的内存使用量不断增长,直到应用程序崩溃.当我启动应用程序时,内存使用量约为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];
}
Run Code Online (Sandbox Code Playgroud)
现在,这是我在调试时所做的观察:
[cell.contentView addSubview:label)时,应用程序也正常运行.因此必须是这条线.现在我没有发布代码的重新生成,因为正如我所说,当我注释掉内部块时,应用程序正常运行 - 也就是说,它创建了我的单元格,当我滚动时没有问题(内存保持在2.1MB).
可能是什么问题呢?
编辑
这段代码位于我CustomCollectionViewController的reloadData方法中.它是从scrollViewDidEndDecelerating方法调用的.
因为无论何时滚动集合视图,都会UILable一次又一次地添加到该视图中.这会增加记忆力.您可以在添加新视图之前从该单元格中删除所有现有视图.
使用此代码删除所有子视图
[[cell.contentView subviews]
makeObjectsPerformSelector:@selector(removeFromSuperview)];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1179 次 |
| 最近记录: |