最近我将我的项目迁移到ViewBinding,为了使它不那么冗长,我决定通过get()属性公开它,它似乎工作得很好,但是其他一些开发人员说它可能会导致内存问题,因为它给变量赋值,我认为它没有这样做,因为它是通过get()属性公开的。示例:
class MyActivity : AppCompatActivity() {
private val textView: TextView get() = binding.textViewID
private val binding by lazy { MyActivityBinding.inflate(layoutInflater) }
}
有人能证实这一点吗?
当定义具有getter且没有初始赋值的属性时,不会生成备份字段。所以不,这不是在浪费内存。
在一行上编写它的方式看起来与代码非常相似,在代码中没有定义getter,并且要为备份字段赋一个初始值。也许你的同事误读了你的代码。我通常在下一行定义getter,这样看起来就不一样了。否则,当您打算包含get()
时,很容易意外地忽略它。
即使它创建了一个支持属性,您肯定没有足够的视图被引用,以至于它甚至会占用大量的内存,您应该为此浪费时间。