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

@property (strong, nonatomic) UIView *topView;

- (UIView *)topView {
...
}

是不是如下:
var topView: UIView {
  get {
    ...
  }
}

如果前者是真的,是否有方法定义外部getter?

最佳答案

我想你要问的是如何实现类似于以下的东西:

@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代码是一个计算只读属性,每次访问它时都会对其进行评估。

09-25 18:45