总结 ﹣ UITableView (性能优化①)
- 博客分类:
- 总结
注 : 文章不断更新,转载文章请加上作者
总结 ﹣ UITableView 中,说了如何遵守协议调用方法,使UITableView展示数据: 如下面代码所示
不好的地方:(对性能的影响)
1 . 一开始就创建了可视范围的多个对象
2 . 每调用一次都分配新的存储空间,去创建UITableViewCell对象 , 也就是说, 假如滚动很快,快速来回滚动的时候,内存会忽然飙升得很高.(因为不断[[UITableViewCell alloc] )
性能优化 :
性能优化的思路 :
假如屏幕只能显示八块UITableViewCell , 引入一个缓存池机制 ,当继续滚动到下一个的时候 , 这个时候创建第九块 UITableViewCell , 然后第一块UITableViewCell完全消失的时候,将它放入缓存池 中,等到第十块UITableViewCell需要再创建的时候,从缓存池 中拿出第一块UITableViewCell , 周而复始.
所以. 屏幕假如只显示8块Cell , 整个过程至销毁只要创建9块Cell对象即可.整个过程怎样滚动也不需要在多创建UITableViewCell
注意点:
当开发程序复杂的时候,缓存池 里面有各种各样的东西,很多的cell等,所以怎样知道区分cell对应的UITableView呢?
解决办法: 每次创建UITableViewCell , 都给它绑定一种类型(一种标示等) , 然后从缓存池 [color=blue][/color]中找的时候,根据类型(标示等)去找到对应的
cell用来重用
步骤:
1. 通过一个标识,去缓存池中寻找可循环利用的cell
2. 如果缓存池找不到, 可循环利用的cell: 创建一个新的cell , 给cell贴个标识
3. 给cell设置新的数据.
代码如下 :
总结 ﹣ UITableView 中,说了如何遵守协议调用方法,使UITableView展示数据: 如下面代码所示
//这种调用方法,固然可以从数据模型中获取到数据,并且展示出来, //每当一个cell进入视野范围内,就会调用一次方法(打印一下就可以测试) - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil]; Apple *apple = self.apple[indexPath.row]; cell.textLabel.text =apple.name; cell.detailTextLabel.text = apple.intro; cell.imageView.image = [UIImage imageNamed:apple.icon]; return cell; }
不好的地方:(对性能的影响)
1 . 一开始就创建了可视范围的多个对象
2 . 每调用一次都分配新的存储空间,去创建UITableViewCell对象 , 也就是说, 假如滚动很快,快速来回滚动的时候,内存会忽然飙升得很高.(因为不断[[UITableViewCell alloc] )
性能优化 :
性能优化的思路 :
假如屏幕只能显示八块UITableViewCell , 引入一个缓存池机制 ,当继续滚动到下一个的时候 , 这个时候创建第九块 UITableViewCell , 然后第一块UITableViewCell完全消失的时候,将它放入缓存池 中,等到第十块UITableViewCell需要再创建的时候,从缓存池 中拿出第一块UITableViewCell , 周而复始.
所以. 屏幕假如只显示8块Cell , 整个过程至销毁只要创建9块Cell对象即可.整个过程怎样滚动也不需要在多创建UITableViewCell
注意点:
当开发程序复杂的时候,缓存池 里面有各种各样的东西,很多的cell等,所以怎样知道区分cell对应的UITableView呢?
解决办法: 每次创建UITableViewCell , 都给它绑定一种类型(一种标示等) , 然后从缓存池 [color=blue][/color]中找的时候,根据类型(标示等)去找到对应的
cell用来重用
步骤:
1. 通过一个标识,去缓存池中寻找可循环利用的cell
2. 如果缓存池找不到, 可循环利用的cell: 创建一个新的cell , 给cell贴个标识
3. 给cell设置新的数据.
代码如下 :
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { //0. static修饰局部变量: 可以保证局部变量只分配以此存储空间(只初始化一次) static NSString *ID = @"Apple"; //1. 通过一个标识,去缓存池中寻找可循环利用的cell UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; //2. 如果缓存池找不到, 可循环利用的cell: 创建一个新的cell , 给cell贴个标识 if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID]; } //3 经过前两步后肯定又Cell了.给cell设置新的数据. Apple *apple= self.apple[indexPath.row]; cell.textLabel.text =apple.name; cell.detailTextLabel.text = apple.intro; cell.imageView.image = [UIImage imageNamed:apple.icon]; NSLog(@"%p - %@ - %ld ",cell,apple.name,indexPath.row); return cell; }
发表评论
-
发现控件设置了没显示的几种情况
2015-08-13 11:41 372有时候,明明frame和数据都设置了,但是控件却没显示出来,总 ... -
关于Tag的使用
2015-08-03 21:48 197很多时候,tag用作标示,可以通过标示去寻找例如一个父控件中里 ... -
总结 ﹣ UITableViewCell
2015-07-27 19:30 268注 : 文章不断更新,转载文章请加上作者 UITableV ... -
总结 ﹣ UITableView
2015-07-26 20:16 235注 : 文章不断更新,转载文章请加上作者 要实现表格数据形 ... -
总结 ﹣ IOS的动画
2015-07-26 11:14 403注 : 文章不断更新,转载 ... -
总结 ﹣ 代理设计模式
2015-07-25 18:50 259注 : 文章不断更新,转载文章请加上作者 1 . 什么是(代 ... -
总结 - 控制沙盒(NSFileManager 文件操作)④
2015-07-25 10:23 383注 : 文章不断更新,转载文章请加上作者 NSfIleMa ... -
总结 ﹣ 查看真机的沙盒 ③
2015-07-21 21:56 409前面 总结 ﹣ 沙盒 ... -
总结 ﹣ 获取沙盒目录 ②
2015-07-21 21:55 303注 : 文章不断更新,转载文章请加上作者 总结 ... -
storyboard常用属性总结
2015-07-20 18:01 256注 : 文章不断更新,转载文章请加上作者 View ... -
总结 ﹣ 沙盒机制(SandBox)①
2015-07-20 15:56 284iOS APP可以在自己的沙盒里读写文件,但 ... -
使用xib封装一个自定义view
2015-07-15 17:51 499使用xib封装一个自定义view步骤 1.新建一个继承自U ...
相关推荐
一、介绍 iOS开发中,UITableView可能是平时我们...今天研究的内容就是UITableView的优化。 开始之前,你能说出几种UITableView的可优化项?cell复用(Android中经常称为ListView的重用,其实重用复用都是一个意思,由
UITableView的优化技巧 - iOS知识库1
在iOS开发的过程中,UITableview是使用频率很高的控件之一,今天写的优化方法不是关于性能优化方面的,主要从为Controller瘦身方面考虑的。在使用tableView的时候不可避免的要谈到tableView的delegate和dataSource两...
UITableview控件基本使用 一、一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) 代码如下: #import @interface NJHero : NSObject /** * 头像 */ @property (nonatomic, copy) NSString *icon; /** ...
在iOS开发的过程中,UITableview是使用频率很高的控件之一,今天写的优化方法不是关于性能优化方面的,主要从为Controller瘦身方面考虑的。在使用tableView的时候不可避免的要谈到tableView的delegate和dataSource两...
iOS开发中UITableview控件的基本使用及性能优化方法共15页.pdf.zip
UITableView——reloadData与reloadSection性能较周五上午,测试,有bug:每次reset模拟器后,第次进界,闪退,第次进界,结果
UITableView、UITableView基本用法、UITableView详解,UITabelView常用方法
UITableView优化技巧
如何进行TableView流畅度优化的。 主要思路如下: 1.异步渲染内容到图片。 2.按照滑动速度按需加载内容。 3.重写处理网络图片加载。 实际上做完前两点就可以很流畅了。我把内容都异步渲染到了一张图上,尽可能减少...
UITableView 中显示网络图片,延迟加载 缓存机制,UITbaleView优化后滚动流畅,并且流量控制到位.体验极好
这是一个对UITableView创建列表进行优化的例子,主要是以淘宝列表作为例子开发的小app,供初学者学习
UITableView相关操作
UITableView Cache - UITableView 缓存
UITableView教材 IPHONE IPAD
UI 使用总结之--UITableView
UITableView 详细讲解
IOS UITableView UIcollectionView 结合