美文网首页花落√莫相思
46-Swift之属性检测器(willSet&didSe

46-Swift之属性检测器(willSet&didSe

作者: NetWork小贱 | 来源:发表于2017-07-14 11:35 被阅读20次

    一 、 willSet & didSet 的介绍

    属性观察器用于监控一个属性的变化(属性初始化除外),针对属性值的变化做出响应的处理。
    ##> 属性观察器有以下特点:
    1、当属性发生变化时,就先触发 willSet ,然后触发didSet 。
    2、当创建属性观察器的时候,必须指明属性的类别。否则,将会编译不能通过。
    3、willSet可以带一个newName的参数。否则,newName默认命名为newValue。
    4、didSet可以带一个oldName的参数,表示旧的属性,不带的话默认命名为oldValue。
    5、属性初始化的时候,willSet和didSet 不被调用。
    6、属性发生变化,变化后和原来一样则willSet和didSet 也被调用。

    二、 willSet & didSet 的使用

    1、 创建一个类,并使它的一个属性添加观察器

    class CarSwift  {
        /**
         车名
         */
        var carName = "宝马"
        /**
         铁的价格
         */
        var ironPrice :Double = 0.0
        {
            willSet{
                print("铁涨价了!")
            }
            
            didSet{
                carTotalPrice = carWeight * ironPrice
            }
        }
        /**
         车的重量
         */
        var carWeight = 120.0
        /**
         车总价格
         */
        var carTotalPrice :Double = 0.0
    }
    

    2、 对属性观察器的测试

    /**
     属性的监控测试
     */
    let MyCar = CarSwift.init()
    MyCar.ironPrice = 110.0
    let MyCarPrice = MyCar.carTotalPrice
    print("我的车的价格是:" + "\(MyCarPrice)")
    

    其输出结果:

    /*
    输出:
    铁涨价了!
    我的车的价格是:13200.0
    */

    相关文章

      网友评论

        本文标题:46-Swift之属性检测器(willSet&didSe

        本文链接:https://www.haomeiwen.com/subject/skmnhxtx.html