gpt4 book ai didi

ios - Swift 在闭包中使用 self 时必须对存储属性使用惰性?

转载 作者:行者123 更新时间:2023-11-28 06:17:41 25 4
gpt4 key购买 nike

我为 UITableViewCell 创建子类,并想为 subview 添加 UILabel。我使用存储的属性来获取 UILabel,就像这样

class ZXArtistListCell: UITableViewCell {
lazy var label: UILabel = {
let view = UILabel()
self.contentView.addSubview(view)
return view
}()
}

但是,当我删除 lazy 或将 lazy var 替换为 let 时,会出现错误,

Value of type'(NSObject) -> ZXArtistCell' has no member 'contentView'

那么,这是什么意思?

最佳答案

当您使用惰性声明标签时,直到第一次使用时才会计算初始值。所以 Instantiates View 可能已经完成。

但是在 Swift 中使用 let 的概念,let 的变量必须在使用 self 之前进行初始化。

使用 lazy var 意味着编译器可以验证分配给 label 的值在 self 是一个有效对象之前不会被访问,因为在所有其他对象之前不可能调用 label类的成员已经初始化。

关于ios - Swift 在闭包中使用 self 时必须对存储属性使用惰性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44698474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com