简单了解
懒加载:
顾名思义,用到的时候才去加载,又称延时加载。OC中常用两种懒加载如下:
1.非image实例懒加载:
- (UILabel *) nameLabel {
//手动实现实例的get方法,调用这个实例的时候判断该实例是否已初始化,若未初始化则先初始化后返回
if (!_nameLabel) {
_nameLabel = [[UILabel alloc] init];
}
return _nameLabel;
}
2.image实例懒加载,多用于tableView加载图片中,实现逻辑同上,用到的时候再加载。核心思想:
当tablew开始滑动的时候停止请求图片,当tableView停址滑动的时候开始请求图片。如果在请求过程中滑动tableView,则手动停止请求。
为什么使用懒加载
当一个项目做完所有功能,并且测试通过后,身为程序猿应该干什么?坐等下一个需求?错!!!
这个时候表面上功能点全部跑通,但是潜在问题还是存在的。比如滑动tableView的时候偶现卡顿,如果用户很大,这就是硬伤!一般情况下,创业公司的源代码中,异步发送请求的同时并未做其他操作,可以滑动tableView,这个时候可以看到tableView的fps很低,就是因为滑动的同事在请求数据,虽然异步,但在渲染的时候就会影响性能。
所以这就是为什么!
隆重的介绍本文主角LazyTableImages
LazyTableImages是苹果官方Demo,用来展示图片懒加载。通过源代码,可以很清晰的看出图片懒加载的思想。这里是LazyTableImages Demo链接,下文将分析核心代码片段。
核心代码解析
单个加载Cell
if (!appRecord.appIcon) {
if (self.tableView.dragging == NO && self.tableView.decelerating == NO) {