【发布时间】:2014-07-26 22:57:16
【问题描述】:
我正在尝试围绕 Swift 语言展开思考。使用 Objective-C 在代码中构建视图的常见模式是覆盖 UI 属性并延迟加载它们,如下所示:
@property(nonatomic, strong) UILabel *myLabel;
- (UILabel *)myLabel
{
if (!_myLabel) {
_myLabel = [[UILabel alloc] initWithFrame:CGRectMake(20.0f, 75.0f, 320.0f, 20.0f)];
[_myLabel setFont:[UIFont subHeadlineFont]];
[_myLabel setTextColor:[UIColor subHeadlineColor]];
[_myLabel setText:@"Hello World"];
}
return _myLabel;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view addSubview:self.myLabel];
}
这允许 UIElements 的配置在其设置中自包含,但不会导致每次都重新配置它们。
似乎我们无法访问 Swift 中的后备存储,并且 @lazy 关键字实际上并没有相同的语义。
我很好奇是否有人在 Swift 中发现了一种类似的模式,它允许人们以一种不会导致每次都重新配置的简洁语法方式将变量和常量的配置与它们的声明保持在一起?
【问题讨论】:
标签: swift