以下表达式的Swift等价物是什么:
@property (strong, nonatomic) UIView *topView;
- (UIView *)topView {
...
}
是否如下:
var topView: UIView {
get {
...
}
}
如果前者是真的,有没有办法定义外部吸气剂?
答案 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代码是一个计算的只读属性,每次访问时都会对其进行评估。