Object-C--->Swift之属性观察者

Posted brucemengbm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Object-C---&gt;Swift之属性观察者的主要内容,如果未能解决你的问题,请参考以下文章

Object-C与Swift混合开发

Object-C与Swift混编

Object-C与Swift混合开发

git :设置 object-c 的忽略文件

代码分享-Swift版的和Object-C版倒计时

Object-C 中的 Swift 代码:“ClassName”没有可见的@interface 声明选择器“alloc”