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

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()  }()

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容