zoukankan      html  css  js  c++  java
  • Object-C--->Swift之(十一)属性观察者

    属性观察者机制能让程序在属性被赋值时获得运行代码的机会,用来监视属性的除初始化之外的属性值变化,当属性值发生改变时能够对此作出响应

    详细包含两个特殊的回调方法:

    willSet(newValue):被观察的属性即将被赋值之前自己主动调用方法。

    didSet(old Value):被观察的属性被赋值完毕之后自己主动调用该方法。

    观察的范围

    除了延迟存储属性之外的全部存储属性(包含实例存储属性或类型存储属性)。


    可通过重载方式为继承得到的属性(包含存储属性和计算属性)加入

    属性观察者

    定义语法格式

    [修饰符] var 存储属性名:属性类型[=初始值]{
     willSet(newValue){
    //属性即将被赋值之前自己主动运行的代码
    }didSet(oldValue)
    {
    //属性被赋值完毕之后自己主动运行的代码
    }
    }
    

    说明:

    willSet:willSet部分可定义一段运行性代码,被观察的属性即将被赋值之前自己主动运行这块代码。

    willSet部分能够显式制定一个形參名,该形參代表了该属性将被设置的新值。Swift也能够省略这个形參名。Swift将为该形參提供一个隐式形參名:newValue。

    didSet:didSet部分可定义一段运行性代码,被观察的属性被成功赋值之后自己主动运行这块代码。didSet部分能够显式制定一个形參名,该形參代表了该属性将被改动之前的旧值。Swift也能够省略这个形參名,Swift将为该形參提供一个隐式形參名:oldValue。

      class Person {
        var age:Int=0
            {
            willSet{
             if(newValue<0 || newValue>200)
             {
                print("你输入的有误。非人类呀")
            }
             else{
                print("即将成功")
                }
    
            }
            didSet{
            print("已完毕,原来的年龄为(oldValue)")
    
            }
        }
    }
     var p=Person()
     p.age=1000
    
  • 相关阅读:
    泛型
    java unicode补充字符带来的码点和代码单元问题
    GIT相关
    Html5 Canvas学习
    解决animate动画连续播放bug
    自定义对象级别的组件开发
    关于常用却忘记的css,jQuery
    json格式初涉
    ajax
    jquery.validation.js的自定义方法
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7137732.html
Copyright © 2011-2022 走看看