iOS之UI随笔-UITableView的性能优化
来源:互联网 发布:微信发淘宝优惠券链接 编辑:程序博客网 时间:2024/06/05 10:20
参考:http://bbs.51cto.com/thread-1123666-1-1.html
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
这个代理方法的实现,在可见的页面是会重复绘制页面的,所以绝大部分人都会在这里做一些代码处理比如:
static NSString *CellIdentifier = @"LazyTableCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
很常规的,防止cell对象无限的被创建,等同于android里面适配器的方法public View getView(int position, View convertView, ViewGroup arg2)
以上举例代码是可以让cell被重复使用,一般大概只会在可见页面部分的几个cell会被new下,其他的全部重复使用前面已经有的cell对象,到时候只要填充数据就可以了
那么仅仅只是如此,恐怕现在的cell自定义的页面不只是文本那么简单,多多少少都会带有一些图片吧,当你下滑时候是否发现有那么一点点的卡顿现成,特别是网络不好,而且还是在iPhone4上跑的就会更明显了
那么在cell里面异步加载图片是个程序员都会想到,但是如果你给每个循环对象都加上异步加载,并且下滑的时候,这一操作将会被执行,虽然是异步,但是一个app里面的线程过多也会卡顿的,特别是在下滑操作的时候给每个图片进行异步加载
那么这里可以利用UIScrollViewDelegate代理很好的解决这问题
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
可以识别tableview禁止或者减速滑动结束的时候进行异步加载图片以下方法来执行异步加载操作 //获取可见部分的cell对象 NSArray *visiblePaths = [self.tableView indexPathsForVisibleRows]; for (NSIndexPath *indexPath in visiblePaths) { //获取的dataSource里面的对象,并且判断加载完成的不需要再次异步加载 <code> }同时在cell绘制中也做限制
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath if (self.tableView.dragging == NO && self.tableView.decelerating == NO) { //开始异步加载图片 <code> }
如果tableview 停止滑动的时候开始异步加载图片最后也别忘记在内存紧张的情况下释放调所有的异步线程,以保证的你的app不会被系统强制关闭- (void)didReceiveMemoryWarning{// 释放调异步加载图片的线程以及所有图片资源对象<code>}还有千万别忘记销毁的时候手动把所有的使用到的代理设置nil至此性能优化结束,来源于官方文案
更多的优化措施可以参考:http://www.cocoachina.com/ios/20150602/11968.html
0 0
- iOS之UI随笔-UITableView的性能优化
- iOS开发之UITableView的性能优化
- IOS之优化UITableView性能
- iOS 优化UITableView的性能
- iOS之美:如何优化UITableView的性能
- iOS之美:如何优化UITableView的性能
- iOS开发之UITableView性能优化
- ios-提升之【8】-UITableView性能优化
- ios UITableView性能优化
- iOS UITableView性能优化
- iOS-UITableview性能优化
- iOS autolayout性能问题, uitableview的优化
- iOS:关于UITableView的性能优化点
- iOS:关于UITableView的性能优化点
- iOS:关于UITableView的性能优化点
- UI—UITableView的性能优化、plist文件的加载
- 老生常谈之UITableView的性能优化
- UI 一一 UITableView的使用和性能优化
- 时间复杂度最小的最短路径算法?由这个想到的
- (python)下载秒拍美拍视频
- 英语年份的读法
- 《Python程序设计基础》在亚马逊当当京东互动出版网淘宝等各大书店上架
- 表扩张
- iOS之UI随笔-UITableView的性能优化
- class(类)和struct(结构)的区别
- poj1338 Ugly Numbers
- 物理内存、虚拟内存
- [iOS] 使用CIColorCube快速製作濾鏡
- 微服务架构-0
- 《Python程序设计》在亚马逊京东当当互动出版网淘宝全面上架
- 蒟蒻的入门之线段树
- 战争迷雾sharder