Swift相当于lazy Property getter

时间:2015-03-12 20:30:20

标签: objective-c swift properties

以下表达式的Swift等价物是什么:

@property (strong, nonatomic) UIView *topView;

- (UIView *)topView {
...
}

是否如下:

var topView: UIView {
  get {
    ...
  }
}

如果前者是真的,有没有办法定义外部吸气剂?

1 个答案:

答案 0 :(得分:8)

认为你要问的是如何实现类似以下的内容:

@property (nonatomic, strong) UIView *topView

- (UIView *)topView {
    if (_topView == nil) {
        _topView = //...
        // configure _topView...
    }
    return _topView;
}

这个懒惰的属性getter很容易在Swift中实现:

lazy var topView: UIView = {
    let view = //...
    // configure view...
    return view
}()

这会生成只读变量,该变量仅在首次访问时初始化。您发布的Swift代码是一个计算的只读属性,每次访问时都会对其进行评估。