我试图把我的头围绕着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允许一个保持变量和常量的配置与他们的声明一个整洁的句法方式,不会导致每次重新配置?
我认为用闭包初始化的惰性属性将工作:
lazy var myLabel: UILabel = { var temporaryLabel: UILabel = UILabel() ... return temporaryLabel }()
当我阅读“Swift编程语言”。(Checkerboard示例)闭包只评估一次)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。