懒加载(LazyLoad)

懒加载,即延迟加载,需要的时候再加载到内存。

一次性加载数据,类似C语言中变量的定义,需要统一在函数体的最开始部分定义。iOS的设备的内存普遍不大,因此一次性加载会使程序运行缓慢。

懒加载,类似C++语言,灵活度更高,需要用到的时候再定义。而且有些数据在后期加载时,可能前面已经有些数据被释放了,内存会比之前一次性加载轻松。

同样的道理,iOS中大概有两种形式的懒加载:

  • 数据的懒加载
  • UI 控件的懒加载,这大部分是 iOS 的内部封装

这两种形式的懒加载的加载方式都是同一种,都是对属性的getter方法的重写。

01. // 数据的懒加载
02. // 1、定义一个存储数据对象的属性,例如加载plist文件
03. @property (nonatomic, strong) NSArray *array;  //plist文件的数据一般加载到数组对象中,数组属性 -- strong
04. ...
05. // 2、实现getter方法的重写
06. - (NSArray *)array{
07.     //判断扩展的成员是否为nil,即判断是否为首次懒加载,懒加载核心就是为了懒,当然对于加载操作做的越少越好
08.     if(_array == nil)    // 需要注意这里不能self.array == nil,会陷入死循环,很多时候还是要区分_array 和 self.array 的
09.     {
10.             // 具体见plist文件的读写
11.     }
12.     return _array;   // 这里_array != self.array
13. }
14. ...
01. // UI 控件的懒加载
02. // iOS 内部的一个例子,表视图的单元格中的UIImageView,UILabel等
03. @property (strong, nonatomic) UIImageView *imageView;
04. @property (strong, nonatomic) UILabel *textLabel;
05. // 当然,这些被封装了,也不知道到底是不是,但感觉上如果是懒加载比较好
06. // 表视图的单元格由4种格式,并不是所有格式都需要图片控件的,因此感觉懒加载会更灵活
07. - (UIImageView *)imageView
08. {
09.     if(_imageView == nil){
10.             _imageView = [[UIImageView alloc] initWithFrame: ...];
11.             ...    // 图片控件的配置信息
12.      }
13.      return _imageView;
14. }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,613评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,745评论 4 61
  • 冷芸时尚圈已经成立。本群是开放群,主要是为了让时尚产业相关的从业人员和时尚爱好者通过此平台相互认识、学习和成长。若...
    冷芸时尚阅读 4,183评论 0 0
  • 沉沉午眠 醒来 恍如隔世 千军万马踏平千山万水 你在哪里啊 世上没有一条干净的平坦的路 我有一把油纸伞,一双小皮鞋...
    野派阅读 1,495评论 2 3
  • 浅谈对公众号 前两天,小编的一个好朋友偶然间看到小编的手机桌面,惊叹道:你手机里下载了近100个app,你用的过来...
    keeppassion阅读 1,724评论 0 2

友情链接更多精彩内容