9.7 Swift属性观察器

来源:互联网 发布:移动硬盘删除数据恢复 编辑:程序博客网 时间:2024/04/30 05:11

        /**

         属性观察器

         观察属性的变化,是指属性被修改时可以调用我们事先写好的代码去额外执行一些操作。

         类似于OC中的KVO

         

         存在两种属性观察器

         1. willSet 在设置新值的时候调用

         2. didSet  在设置新值的之后调用

         可以直接为除 lazy属性之外的存储属性添加属性观察器,你不可以直接给类里面的计算属性添加属性观察器,

         当然也可以在继承类中为父类的计算属性提供属性观察器(后面再讲)。

         */

        

        

        struct MyRect {

            var origion:(x:Double, y: Double) = (0,0) {

                willSet {

                    // 属性被修改之前

                    print("will set==\(newValue.x\(newValue.y)")

                }

                

                didSet {

                    // 属性被修改之后

                    print("did set==\(oldValue.x\(oldValue.y)")

                }

            }

            var size: (w:Double, h: Double) = (0,0)

            var center: (x:Double, y: Double) = (0,0)

        }

        

        var rect =MyRect()

        

        rect.size = (100,100)

        

        //  内容被修改的时候被调用

        rect.origion = (9,9) // setter

        

        // 这个时候不会调用了

        let dd = rect.origion// getter

        

        

        rect.center = (rect.origion.x + rect.size.w /2, rect.origion.y + rect.size.h /2)

0 0
原创粉丝点击