属性观察者willSet和didSet; 财产获取者和安置者

只有我

在属性内处理此时willSet-didSetget-之间有什么区别set

从我的角度来看,它们两者都可以为属性设置值。什么时候,为什么,我应该使用willSet- didSet,什么时候get- set

我知道forwillSetdidSet的结构如下:

var variable1 : Int = 0 {
    didSet {
        println (variable1)
    }
    willSet(newValue) {
    ..
    }
}

var variable2: Int {
    get {
        return variable2
    }
    set (newValue){
    }
}
马克西姆·肖斯汀

什么时候以及为什么要使用willSet / didSet

  • willSet在值存储之前被调用
  • didSet新值存储立即调用

考虑带有输出的示例:


var variable1 : Int = 0 {
        didSet{
            print("didSet called")
        }
        willSet(newValue){
            print("willSet called")
        }
    }

    print("we are going to add 3")

     variable1 = 3

    print("we added 3")

输出:

we are going to add 3
willSet called
didSet called
we added 3

它像前/后条件一样工作

另一方面,get如果要添加例如只读属性,则可以使用

var value : Int {
 get {
    return 34
 }
}

print(value)

value = 2 // error: cannot assign to a get-only property 'value'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift语言中观察者属性didSet和willSet的用途是什么?

来自分类Dev

在扩展中的弱属性上添加didSet观察者

来自分类Dev

在扩展中的弱属性上添加didSet观察者

来自分类Dev

观察者的整数属性

来自分类Dev

依赖注入和观察者模式

来自分类Dev

可变状态和观察者模式

来自分类Dev

观察者模式和依赖倒置

来自分类Dev

观察者和位置:绝对

来自分类Dev

摇摆和观察者模式

来自分类Dev

Java观察者和策略的结合?

来自分类Dev

观察者模式:独立观察属性

来自分类Dev

确保属性观察者 didSet 在 viewDidLoad 之后操作用户界面

来自分类Dev

具有观察者和可观察者的MVC

来自分类Dev

观察者模式和有状态的可观察范式

来自分类Dev

建立观察者和可观察类

来自分类Dev

灰烬组件观察者属性

来自分类Dev

如何在Ober js属性中同时具有观察者和init

来自分类Dev

RxJava和观察者代码的并行执行

来自分类Dev

在异步中(和观察者模式)链接协程

来自分类Dev

从UITableViewCell上的多个AVPlayerItem添加和删除观察者

来自分类Dev

内存访问与结构和观察者模式冲突

来自分类Dev

如何使用Magento 2中的事件和观察者

来自分类Dev

Nuxt-合成API和观察者

来自分类Dev

Ember.js中的观察者和异步

来自分类Dev

异步任务和多个观察者与 RxSwift

来自分类Dev

“观察者”与“通知”(在属性块中)与“观察者”与“侦听器”之间的区别

来自分类Dev

在xamarin中获取NSNotification的观察者

来自分类常见问题

观察者和订阅者之间有什么区别?

来自分类Dev

协议willSet和didSet