IOS UITableView性能优化

1.关于UITableView性能的优化,很容易就让人想起UITableView的复用,那么除此之外呢?还有么有其他的方法能够优化用户的体验,或者说优化我们的设计的软件呢?

答案是:有!

一般我们在设计一款应用的时候,占用系统资源最多,应该就是图片的加载了吧,的确,一方面图片占用的内存大,而且数量多,通常我们需要开启多个线程去下载这些图片,但是这些图片当中,有些图片用户是并不关心的,如何加载用户喜欢的资源(图片),而不去加载那些用户不感兴趣的资源,就是今天的主题,这个问题的解决方法,其实说出来估计大家都知道,但是向这方面想的人却很少!

这个方法就是:懒加载!

这里我举个例子,比如说我们的QQ列表,我们在打开好友列表时,哗的一下展开几百个好友cell,如果不幸的是你想要找的好友在最下面,那么你接下要做的事就是下拉表视图,带来的直接结果就是,你拉下来的所有表项,好友头像都会加载,用户的角度来说,这些不必要的流量就是一种浪费,而我们通过懒加载方式避免这种浪费,废话少说,看代码

//实现tableView的代理,这个类也会成为scrollView的代理
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    //假如我们使用的时第三方图片加载类库(SDWebImage或者AFNetworking)
    //我们在视图滚动停止的加载我们需要的图片,着这里我们可以写一个代理,通知方法,或者block都可以,调用图片加载,而在视图滚动没有停止的时候不要去加载图片,查看滚动视图停止时有哪些cell,方法为_tableView.visibleCells,不过通常通过取数组中某个model的imageURL来设置图片,而取这个值这是通过下方这个方法
    NSLog(@"%@",_tableView.indexPathsForVisibleRows);
}
时间: 2024-12-27 23:45:19

IOS UITableView性能优化的相关文章

iOS开发——项目实战总结&UITableView性能优化与卡顿问题

UITableView性能优化与卡顿问题 1.最常用的就是cell的重用, 注册重用标识符 如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell 如果有很多数据的时候,就会堆积很多cell.如果重用cell,为cell创建一个ID 每当需要显示cell 的时候,都会先去缓冲池中寻找可循环利用的cell,如果没有再重新创建cell 2.避免cell的重新布局 cell的布局填充等操作 比较耗时,一般创建时就布局好 如可以将cell单独放到一个自定义类,初始化时就布局好

iOS开发——实战项目总结&UITableView性能优化技巧

UITableView性能优化技巧 Table view需要有很好的滚动性能,不然用户会在滚动过程中发现动画的瑕疵. 为了保证table view平滑滚动,确保你采取了以下的措施: 正确使用`reuseIdentifier`来重用cells 尽量使所有的view opaque,包括cell自身 避免渐变,图片缩放,后台选人 缓存行高 如果cell内现实的内容来自web,使用异步加载,缓存请求结果 使用`shadowPath`来画阴影 减少subviews的数量 尽量不适用`cellForRowA

iOS 8:【转】UITableView 性能优化笔记

源地址:http://fann.im/blog/2012/09/11/uitableview-optimization-notes/ Hacking Week 技术总结最后一篇,记一下 UITableView 性能优化需要注意和改进的地方. 网络图片异步加载,SDWebImage. 文字直接 drawInRect/drawAtPoint 绘制,参考 ABTableViewCell,AdvancedTableViewCells. 本地图片也可以直接绘制,或者用 CALayer 来添加显示. cel

iOS 程序性能优化

前言 转载自:http://www.samirchen.com/ios-performance-optimization/ 程序性能优化不应该是一件放在功能完成之后的事,对性能的概念应该从我们一开始写代码时就萦绕在我们脑子里.了解 iOS 程序性能优化的相关知识点,从一开始就把它们落实到代码中是一种好的习惯. 初级技巧 使用复用机制 在我们使用 UITableView 和 UICollectionView 时我们通常会遇到「复用 Cell」这个提法,所谓「复用 Cell」就是指当需要展示的数据条

UITableView性能优化

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 这个代理方法的实现,在可见的页面是会重复绘制页面的,所以绝大部分人都会在这里做一些代码处理比如:static NSString *CellIdentifier = @"LazyTableCell";UITableViewCell *cell = [tableView dequeueR

iOS App 性能优化总结

今天简单总结一些clientapp 优化的方案和方向. 我相信开发一个app大部分团队都能够完毕,可是性能久不一样啦,和我们都写一个冒泡算法一样,我相信每一个人写的冒泡算法都不一样,这些区别就带来了性能的区别. 所以一个好的app 不止看设计.和创意 ,还要看性能. 以下我就简单说几点性能优化点: 一.首页启动速度 启动过程中做的事情越少越好(尽可能将多个接口合并) 不在UI线程上作耗时的操作(数据的处理在子线程进行,处理完通知主线程刷新节目) 在合适的时机開始后台任务(比如在用户指引节目就能够

iOS app性能优化(转)

iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功能上面,比较少去考虑性能的问题,可能这其中涉及到objective-c,c++跟lua,优化起来相对复杂一些,导致应用在比如touch等较低端的产品上,光从启动到进入页面就花了将近一分钟的时间,页面之间的切换没有那种很流畅的感觉,内存也居高不下,比较影响应用的用户体验,所以很有必要进行一些优化,下面记录一下我在优化的过程中的一些心得: 1 instruments ??在iOS上进行性能分析的时候,首

iOS边练边学--UITableView性能优化

一.cell的循环利用方式1: 1 /** 2 * 什么时候调用:每当有一个cell进入视野范围内就会调用 3 */ 4 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 5 { 6 // 0.重用标识 7 // 被static修饰的局部变量:只会初始化一次,在整个程序运行过程中,只有一份内存 8 static NSString *ID =

iOS的性能优化建议

1. 用ARC管理内存 ARC(Automatic ReferenceCounting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露.它自动为你管理retain和release的过程,所以你就不必去手动干预了.忘掉代码段结尾的release简直像记得吃饭一样简单.而ARC会自动在底层为你做这些工作.除了帮你避免内存泄露,ARC还可以帮你提高性能,它能保证释放掉不再需要的对象的内存.   2. 在正确的地方使用 reuseIdentifier