lazy instantiator (懒加载、延迟实例化、延迟初始化)

最开始看斯坦福的视频,对 延迟初始化 这个概念,不太理解

只见到,有些属性的初始化是在init做的,有些是在viewDidLoad做的,有些是在属性的getter方法里面做的

所谓的 延迟初始化,就是在getter方法里面做,需要此属性时才加载

而init(各自view、model)、viewDidLoad(viewcontroller)则是非延迟初始化

好处:

1、有些耗资源性能的属性,这样做可以节省资源

2、将初始化从viewDidLoad或init中剥离出来,这样能让代码更清晰

注意:

在getter做初始化前,先判断实例是否为空,为空则alloc/init一个

栗子:

通常用法,你有一个NSArray的property,但是你不在初始化方法里为其alloc/init,它就只是一个指针,不会占用内存。然后你写了此property的访问器,在访问器里判断此property的指针是否为空,若为空,就alloc/init,这时才真正生成这个NSArray。

Lazy Instantiator的更多相关文章

  1. 代码的坏味道(15)——冗余类(Lazy Class)

    坏味道--冗余类(Lazy Class) 特征 理解和维护类总是费时费力的.如果一个类不值得你花费精力,它就应该被删除. 问题原因 也许一个类的初始设计是一个功能完全的类,然而随着代码的变迁,变得没什 ...

  2. Mach-O 的动态链接(Lazy Bind 机制)

    ➠更多技术干货请戳:听云博客 动态链接 要解决空间浪费和更新困难这两个问题最简单的方法就是把程序的模块相互分割开来,形成独立的文件,而不再将它们静态的链接在一起.简单地讲,就是不对那些组成程序的目标文 ...

  3. Lazy Load, 延迟加载图片的 jQuery 插件.

    Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预 ...

  4. Hibernate之lazy延迟加载

    一.延迟加载的概念 当Hibernate从数据库中加载某个对象时,不加载关联的对象,而只是生成了代理对象,获取使用session中的load的方法(在没有改变lazy属性为false的情况下)获取到的 ...

  5. nhibernate 中 lazy="no-proxy" 时的问题

    在 nhibernate,如果将实体的一个关联属性配置为 lazy="no-proxy",那么,从其他属性计算出来的属性不能正确更新.例如,将以下代码中 Foo.Bar 配置为 l ...

  6. hibernate 中的 lazy=”proxy” 和 lazy=”no-proxy” 的区别

    网上找到个描述的很精妙的例子 Child   <-   many-to-one   ->Parent         class   Child   {         private   ...

  7. jQuery延迟加载插件(Lazy Load)详解

    最 新版本的Lazy Load并不能替代你的网页.即便你使用JavaScript移除了图片的src属性,有些现代的浏览器仍然会加载图片.现在你必须修改你的html代 码,使用占位图片作为img标签的s ...

  8. RabbitMQ Lazy Queue 延迟加载

    Lazy Queue 在著名的单例设计模式中就有懒汉式的实现方式,也就是只有在你需要的时候我才去加载. 这让博主想到了以前上学的时候,每到了假期的假期作业,在假期的时候是从来不做的.只有在快开学老师要 ...

  9. CURL命令报错:dyld: lazy symbol binding failed: Symbol not found: _SSL_load_error_strings解决办法

    Mac OS X 10.11.6, curl 命令报错,错误如下: dyld: lazy symbol binding failed: Symbol not found: _SSL_load_erro ...

随机推荐

  1. Java 虚拟机(Java Virtual Machine)

    Java 编译器将 Java 程序编译成虚拟机能够识别的二进制代码,这种代码称为字节码(Bytecode).字节码就是虚拟机的机器指令,它与平台无关,有统一的格式,不依赖于具体的硬件环境,只运行在 J ...

  2. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:3. 订阅Topic与响应Topic

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  3. tree(2018.10.26)

    题意:给你一颗树,树上每个节点都有一个权值,多次询问树上的一条链的严格上升子序列长度 这道题是个神奇的倍增,先记录\(fa[x][0]\)为\(x-root\)路径上第一个权值比他大的点,然后顺便处理 ...

  4. PostgreSQL-4-DML数据操纵语言

    1.查询语句 \h SELECT  查看SELECT语句说明 基本语法 SELECT column1, column2, columnN FROM table_name;  查询单列/多列数据 SEL ...

  5. OSPF-1-OSPF的数据库交换(5)

    三.LAN中的指定路由器   没有DR概念的话,共享同一条数据链路的一对路由器会形成完整的邻接关系,每对路由器之间都会直接交换它们的LSDB,假设在一个只有6台路由器的LAN中,其中没有DR,那么就会 ...

  6. Codeforces Round #542(Div. 2) B.Two Cakes

    链接:https://codeforces.com/contest/1130/problem/B 题意: 给定n和 2 * n个数,表示i位置卖ai层蛋糕, 有两个人在1号,必须严格按照1-n的顺序买 ...

  7. Java EE学习笔记(四)

    Spring的数据库开发 1.Spring JDBC 1).Spring JDBC模块的作用:Spring的JDBC模块负责数据库资源管理和错误处理,大大简化了开发人员对数据库的操作,使得开发人员可以 ...

  8. nopCommerce - asp.net开源商城

    nopcommerce官网 http://nopcommerce.codeplex.com/ nopCommerce is a open source e-commerce solution that ...

  9. android开发学习 ------- @SuppressWarnings 注解的使用

    @SuppressWarnings 该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默. @SuppressWarnings 批注允许您选择性地取消特定代码段(即,类或方法 ...

  10. [转]为ReportViewer导出的PDF文档加上水印

    接到一個頗富挑戰性的需求,Reporting Service或RDLC報表可匯出成Excel.PDF等檔案格式,對一般麻瓜型使用者而言,PDF唯讀,Excel則可修改,業務單位希望在拿到報表紙本時加以 ...