美文网首页
swift —— tips swift 中的懒加载实现

swift —— tips swift 中的懒加载实现

作者: Laughingg | 来源:发表于2016-08-19 09:19 被阅读86次

    objc

    objc 对象的懒加载

    // 对象的属性
    @property (nonatomic, strong) NSObject *obj;
    
    
    - (NSObject *)obj {
    
        // 这样可以保证值 _obj 对象只被创建一次
        //(也有写成  _objc == nil, 不建议这么写是怕手抖少写一个等号)
        if (_obj!) {
            _obj = [[NSObject alloc] init];
        }
        return _obj;
    }
    

    swift

    swift 的懒加载 方式 1
    lazy 保证数据在用到的时候才会被加载。

    // 使用 lazy 存储属性,lazy 存储属性会保证初始化代码只被执行一次
    /*
    // 这是一个闭包
      {
          return UIScrollView()
      }()
    */
    lazy var scrollView  =  {
          return UIScrollView()
    }()
    

    swift 的懒加载 方式 2
    仿 objc 的 属性懒加载的写法。
    在 swift 中的 存储属性 + 计算属性 == objc 的 property

    private var _scrollView: UIScrollView? = nil
    
    var scrollView: UIScrollView {
        get {
            if _scrollView == nil {
                _scrollView = UIScrollView()
            }
            return _scrollView!
        }
        set {
            _scrollView = newValue
        }
    }
    

    **swift 的懒加载 方式 3(伪方式) ** ( 保证数据被加载一次,但是不是用到的时候才加载 )

    // 使用 let 也可以保证 只被赋值一次,
    let scrollView  = {  return UIScrollView()  }()
    

    懒加载的写法,推荐使用第一种。 对于一些结构性视图的创建和简单设置,可以使用第三种。

    相关文章

      网友评论

          本文标题:swift —— tips swift 中的懒加载实现

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