zoukankan      html  css  js  c++  java
  • swift_属性观察者

    //: Playground - noun: a place where people can play

    import Cocoa

    var str = "Hello, playground"

    定义Class类

    测试类

    swift代码:

    class Test{
        //定义一个变量属性
        var name :String? = "Tom" {
    //        willSet{
    //            print("name_value-changeAfter:(newValue)")
    //        }
    //        didSet{
    //            print("name_value-changeBefore:(oldValue)")
    //        }
    
            //调换willSet和didSet两个方法的顺序
            //看效果
            didSet{
                print("name属性值被改变前的value:(oldValue)")
            }
            willSet{
                print("name属性值将要变成:(newValue)")
            }
        }
    }
    
    let test = Test()
    
    test.name! = "Jason"
    
    //test.name! = "Jack"
    
    //test.name! = "张三"
    
    //test.name! = "李四"
    

    运行结果:

    name属性值将要变成:Optional("Jason")
    name属性值被改变前的value:Optional("Tom")
    

    /********************************************************************************************************

        总结:

            swift的属性观察者,

                使用属性观察者,就是实时查看属性value的变化,很实用的一个东西

            属性观察者提供了两个属性和方法

                oldValue和newValue两个属性

                willSet和didSet两个方法

            willSet这个函数会在属性value改变之前被调用,在方法中可以使用newValue属性来查看属性将要接受的新值

            didSet这个函数会在属性value改变之后被调用,在方法中可以使用oldValue属性来查看属性value被改变前的一个过期值

            方法顺序的问题,

                属性的value被改变前,willSet方法先执行,didSet方法才会执行,即使将didSet方法放在willSet方法的前面

    *********************************************************************************************************/

  • 相关阅读:
    nginx负载均衡代理配置脚本
    想查看下编译安装的nginx默认都带有哪些模块
    docker安装mysql8.0.18
    Reached target Basic System
    layer iframe的一些操作记录:
    微信JSAPI支付
    用go和python实现在图片里藏图片
    go反射优化
    go图片灰度化
    golang 创建发送邮件服务
  • 原文地址:https://www.cnblogs.com/LiJinfu/p/6089295.html
Copyright © 2011-2022 走看看