Swift开发---didSet与willSet

之前有这样一个需求: tableView中的cell要有左划删除功能, 其中的label要根据文字自适应宽度,

一开始去将计算宽度放在了 layoutSubviews() 中, 导致cell在删除时页面出现错乱的情况, 而且

计算量非常大, 性能比较低(在左划删除时不停在计算宽度),所以就想到了使用didSet(willSet)

didSet 与 willSet 被称为属性观察器, 其本质也是闭包.

属性观察器的特点是: 只有在你对该属性进行了赋值操作并且属性值改变的情况下才会执行, 从而减少了计算, 提升了性能. 从而也解决了cell因为重用而带来的界面问题.

注:

如有特殊需求, 比如我们要得到变化前或者变化后的属性值, 可以通过willSet中的newValue(变化后)以didSet中的oldValue(变化前)获取.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容