美文网首页
Swift3.x - 懒加载

Swift3.x - 懒加载

作者: ibabyblue | 来源:发表于2017-03-22 21:37 被阅读148次

懒加载的介绍

  • Swift中也存在懒加载的方法
    • 苹果的设计思想,希望所有的对象在使用时再真正加载到内存中
  • 与OC不同的是,Swift中存在专门的关键字用于实现懒加载
  • lazy关键字可以用于定义某一个属性的懒加载

懒加载的使用

  • 格式:
lazy var 变量: 类型 = {/**创建变量代码*/}()
  • 懒加载的使用
//懒加载的本质是:在第一次使用的时候执行闭包,将闭包的返回值赋值给属性
//lazy的作用只会赋值一次
lazy var items : [String] = {
     () -> [String] in
     return["jim","jack","rose"]
}()

注意:上述闭包的表达式是在属性定义的时候直接赋值给属性的,闭包后面跟的()是初始化的意思。

懒加载闭包的简化写法
懒加载方法的本质为闭包,但是有时候闭包的格式有些繁琐,需要参数定义,返回值,in关键字引导的函数体等等!存在不需要传入参数的情况,还需要写繁琐的格式,这就很尴尬了!但是苹果怎么会让你尴尬呢?

  • 单表达式闭包隐式返回
    单行表达式闭包可以通过省略return关键字来隐式返回单行表达式结果。
    上述懒加载方法可以这样写:
lazy var items : [String] = {
     () -> [String] in
     ["jim","jack","rose"]
}()

因为定义属性是明确需要返回一个字符串数组,函数体中只包含了单条语句,该语句返回一个字符串数组,因此这里没有歧义,return关键字可以省略。

  • 参数名称缩写
    Swift 自动为内联闭包提供了参数名称缩写功能,你可以直接通过 $0,$1,$2来顺序调用闭包的参数,以此类推。
    如果你在闭包表达式中使用参数名称缩写,你可以在闭包定义中省略参数列表,并且对应参数名称缩写的类型会通过函数类型进行推断。in关键字也同样可以被省略,因为此时闭包表达式完全由闭包函数体构成。
    当然当闭包参数不存在的时候,也可以省略参数列表和in关键字,闭包表达式完全由闭包函数体构成!
lazy var items : [String] = {
     ["jim","jack","rose"]
 }()

Zeb
参考地址:https://github.com/numbbbbb/the-swift-programming-language-in-chinese

相关文章

  • Swift3.x - 懒加载

    懒加载的介绍 Swift中也存在懒加载的方法苹果的设计思想,希望所有的对象在使用时再真正加载到内存中 与OC不同的...

  • iOS开发,懒加载

    什么是懒加载? 懒加载--比较懒的加载方式,需要的时候才加载,也称为延时加载。 所谓懒加载既是重写get方法,一定...

  • iOS开发UI篇-懒加载、重写setter方法赋值

    一、懒加载 1.懒加载定义 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的...

  • Fragment结合ViewPager之懒加载

    什么是懒加载?为什么要用懒加载?### 1、什么是懒加载 懒加载就是当ViewPager和Fragment结合在一...

  • iOS懒加载注意事项

    懒加载 1.懒加载 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其ge...

  • web优化之懒加载和预加载

    懒加载和预加载是常用的web优化的手段。所以我们首先应该明白什么是懒加载和预加载。懒加载:懒加载也加延迟加载,延迟...

  • fragment 懒加载

    fragment 的懒加载 懒加载 什么是懒加载:只有在 fragment 显示在界面的时候,才进行数据的加载 懒...

  • 懒加载和预加载

    懒加载和预加载 1. 懒加载 1. 什么是懒加载? 懒加载也就是延迟加载 当访问一个页面的时候,先把img元素或是...

  • Android 懒加载优化

    目录介绍 1.什么是懒加载1.1 什么是预加载1.2 懒加载介绍1.3 懒加载概括 2.实际应用中有哪些懒加载案例...

  • Swift语法点

    1 懒加载 懒加载与OC中的懒加载的区别:懒加载的类一旦 设置为nil 后, 懒加载就不会再次执行,与OC中不同,...

网友评论

      本文标题:Swift3.x - 懒加载

      本文链接:https://www.haomeiwen.com/subject/jqrinttx.html