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