Object-C--->Swift之(十一)属性观察者

简介: 属性观察者机制能让程序在属性被赋值时获得执行代码的机会,用来监视属性的除初始化之外的属性值变化,当属性值发生改变时可以对此作出响应具体包括两个特殊的回调方法:willSet(newValue):被观察的属性即将被赋值之前自动调用方法。

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

具体包括两个特殊的回调方法:

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
相关文章
|
7月前
|
前端开发 容器
使用 object-fit 属性完美过渡图片
这篇文章介绍了CSS属性object-fit的用法。object-fit属性用于指定元素的内容如何适应指定容器的高度和宽度。该属性一般适用于img和video标签,可以进行剪切、缩放或拉伸操作。文章中展示了通过object-fit属性来统一设置多张图片的样式,保持原始比例并改变显示位置的示例,以及使用object-position属性实现简单的过渡效果。
使用 object-fit 属性完美过渡图片
|
7月前
|
JavaScript
vue2中$set的原理_它对object属性做了啥?
vue2中$set的原理_它对object属性做了啥?
66 1
|
7月前
|
前端开发 Java 编译器
Object c/swift,java,c/c++在32位和64位各个平台上基本数据类型 所占有的字节数
Object c/swift,java,c/c++在32位和64位各个平台上基本数据类型 所占有的字节数
50 0
|
前端开发
前端学习笔记202306学习笔记第四十一天-Es6-object.defineProperty监听属性的访问和设置1
前端学习笔记202306学习笔记第四十一天-Es6-object.defineProperty监听属性的访问和设置1
45 0
|
前端开发
前端学习笔记202306学习笔记第四十一天-Es6-object.defineProperty监听属性的访问和设置3
前端学习笔记202306学习笔记第四十一天-Es6-object.defineProperty监听属性的访问和设置3
50 0
|
前端开发
前端学习笔记202306学习笔记第四十一天-Es6-object.defineProperty监听属性的访问和设置4
前端学习笔记202306学习笔记第四十一天-Es6-object.defineProperty监听属性的访问和设置4
42 0
|
前端开发
前端学习笔记202306学习笔记第四十一天-Es6-object.defineProperty监听属性的访问和设置2
前端学习笔记202306学习笔记第四十一天-Es6-object.defineProperty监听属性的访问和设置2
46 0
|
JavaScript 前端开发
熬夜整理的 Object 对象的静态方法、实例属性和实例方法
熬夜整理的 Object 对象的静态方法、实例属性和实例方法,用于理解 Object 对象的静态方法和实例方法的区别,以及 Object 对象的静态方法和实例方法的使用。
97 0
|
前端开发
实用CSS属性——object-fit
我们常常将图片或者视频放在一个盒子内,那么就经常在业务上考虑适配的问题,而object-fit能帮助我们设定图片在盒子中的显示方法
271 6
|
JavaScript
js获取对象属性的两种方法,object.属性名,[‘属性名’ ]
js获取对象属性的两种方法,object.属性名,[‘属性名’ ]
1004 0
js获取对象属性的两种方法,object.属性名,[‘属性名’ ]