Iphone UITableView';s细胞在不可见时释放
我的视野很开阔。每行都是带有视频、图像等的重物。Iphone UITableView';s细胞在不可见时释放,iphone,objective-c,ios,uitableview,Iphone,Objective C,Ios,Uitableview,我的视野很开阔。每行都是带有视频、图像等的重物。 当用户滚动此视图时,如何释放不可见行的内存并加载当前可见行?您是否按照苹果的建议回收UITableViewCell?如果没有,你必须阅读苹果的文档。在cellForRowAtIndexPath:delegate中,您应该有一些东西[customCell setMediaObjects:]。在customCell类中,您可以从内存中释放所有以前的MediaObject 当您调用dequeueReusableCellWithIdentifier时,
当用户滚动此视图时,如何释放不可见行的内存并加载当前可见行?您是否按照苹果的建议回收UITableViewCell?如果没有,你必须阅读苹果的文档。在cellForRowAtIndexPath:delegate中,您应该有一些东西[customCell setMediaObjects:]。在customCell类中,您可以从内存中释放所有以前的MediaObject 当您调用dequeueReusableCellWithIdentifier时,首先会创建10个单元格(在屏幕上一刻只能显示10个单元格),然后将它们加载并配置为显示。
因此,单元格不会被释放。我假设您所说的释放内存是由您所在行的图像和视频使用的,而不是该行本身 在tableview代理中
-(void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView
告诉您tableview滚动何时停止
[myTableView indexPathsForVisibleRows]
为您提供可见内容的数组
如果您的行不在此数组中,则该行不可见,您可以对其执行图像/视频清理。正如其他人所说,您应该确保正确回收单元格,并且在重复使用单元格时不会破坏您需要重新创建的内容 但是,您可能希望释放单元或其视图保留的其他资源。或者,如果该单元有任何挂起的下载请求,例如,您可能希望重置它们的优先级,甚至在该单元屏幕外时取消它们 我认为最干净的方法就是重写
-[UITableViewCell prepareforuse]
当单元格被放回重用队列时,将调用此函数。如果用户在表格中快速上下移动,您可能不希望在单元格离开屏幕时清理单元格(例如,通过查看IndExpathForVisibleRows)
但是,当单元格实际放回重用队列时,这是一个很好的时间来做这项工作,因为您知道,在您退出队列并重新配置它之前,该单元格不会再次出现在屏幕上。使用可重用单元格,忘记内存处理(将其留给系统)