swift lazy懒加载问题

     在了解swift懒加载的问题前,先来说一下懒加载的好处:
  • 需要的时候初始化内存,对内存开销较小,节省内部资源
  • 代码初始化放在一起,代码块比较好划分,方便别人和自己阅读

      我们来看看Swift中懒加载的本质,引用某人的原话:
它本质在siwft中确实是一个闭包,执行顺序是这样的,如果这个lazy修饰的变量没值,就会执行闭包中的东西,不是每次都执行。这个也符合懒加载的定义:懒。
  • 格式:
   lazy var 变量: 类型 = { 创建变量代码 }()

  • 懒加载的写法本质上是定义并执行一个闭包
    // 含义: 当dataList被使用到时, 就会执行等号后面的闭包
    // 所以等号后面的闭包的()是必须写的, 如果不写就会报错
    // 注意点: 如果写懒加载, 那么修饰符必须用var
    lazy var dataList:[String] = {
        print("我被加载了")
        return ["lnj", "lmj", "zs"]
    }()

      demo2:

    lazy var satatuses: [String] = self.loadStatus()
    func loadStatus() -> [String]
    {
        print("我被加载了")
        return ["lnj", "lmj", "zs"]
      }

demo3:
let name = { () -> String in
   return “大包哥"
  }

lazy var myName:String = self.name()

demo4:
///懒加载一个imageView
     private lazy var icon:UIImageView = {
        let imageV = UIImageView(image: UIImage(named:"visitordiscover_feed_image_smallicon"))
        return imageV
    }()

demo5:

class Person {
    var name: String = "zhangsan"

    // 懒加载title
    lazy var title:String = "boss"

    // 如果要做复杂的操作,可以使用以下形式
    lazy var tableView:UITableView?={
        let view = UITableView()
        // do something
        return view
        }()
}

关键词: 懒加载

上一篇: swift获取缓存大小以及删除缓存代码
下一篇: 先谈利益再谈人情,一生受用【转】

目前还没有人评论,您发表点看法?
发表评论

评论内容 (必填):