zoukankan      html  css  js  c++  java
  • swift 上的 lazy

    lazy顾名思义就是慢吞吞的,万非得一就不动。

    那么一个变量也是如此,只有你第一次使用的时候才进去加载。所有又称为延迟加载,需要的时候才加载。

    =========

    这样做的好处:

    1. 模块化,把对象的代码都写在了get方法中,代码的可读性更强。

    2. 占用内存小【在某些情况下,不一定该对象一定要创建】,按需加载

     

    =======

    如何体现?

    1.oc:

    - (UITableView *)tableView{

      if(!_tableView){

        _tableView = [[UITableView alloc] init];

      }

      return _tableView;

    }// 只有第一次调用self.tableView的时候会_tableView才会被创建

    2.swift:

      2.1 简单的表达式:lazy var dataArr = Array<Product>()

      2.2 闭包:lazy var titleStr:String = {return "title"}()

    ============

    使用的例子:

    1. 需要对属性进一步加工才能使用

    class LazyDemo {

        var url:String

        lazy var requestUrl:String = {

            [unowned self] in

            if self.url.hasPrefix("http://"){

                return self.url

            }else{

                return "http://".stringByAppendingString(self.url)

            }

        }()

        init(url:String){

            self.url = url

        }

    }

    2. 需要复杂计算

    lazy var second:Int = {

            var sum = 0

            for i in 1...100000{

                sum += i

            }

            return sum

            }()

    3. 属性不确定是否会被使用:例子来源官网

    class DataImporter {

        /*

        DataImporter is a class to import data from an external file.

        The class is assumed to take a non-trivial amount of time to initialize.

        */

        var fileName = "data.txt"

        // the DataImporter class would provide data importing functionality here

    }

     class DataManager {

        lazy var importer = DataImporter()

        var data = [String]()

        // the DataManager class would provide data management functionality here

    }

     let manager = DataManager()

    manager.data.append("Some data")  // 这个时候才初始化 importer

    manager.data.append("Some more data")

     

     

     

  • 相关阅读:
    071:【Django数据库】ORM聚合函数详解-Avg
    实战:百度知道营销,自问自答技巧(下)
    实战:百度知道营销,自问自答技巧(上)
    QQ群排名霸屏技术居然是这样简单
    百度云盘,资源引流的温床,你绝对值得拥有!
    PC时代 常用搜索引擎高级指令 勿忘
    免费影视资源 日引不说几百上千 反正绝对不会是零
    QQ兴趣部落 大批量引流实战技巧
    新媒体运营之话说如此操作更容易出站街号。
    QQ群认证 人数再度扩容 权限随之升级
  • 原文地址:https://www.cnblogs.com/Ohero/p/4631646.html
Copyright © 2011-2022 走看看