加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

延迟加载属性在swift

发布时间:2020-12-14 06:04:50 所属栏目:百科 来源:网络整理
导读:我试图把我的头围绕着Swift语言。使用Objective-C在代码中构建视图时的常见模式是覆盖UI属性并延迟加载它们,如下所示: @property(nonatomic,strong) UILabel *myLabel;- (UILabel *)myLabel{ if (!_myLabel) { _myLabel = [[UILabel alloc] initWithFrame:
我试图把我的头围绕着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示例)闭包只评估一次)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读