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() }()
懒加载的写法,推荐使用第一种。 对于一些结构性视图的创建和简单设置,可以使用第三种。