swift_属性观察者

//: Playground - noun: a place where people can play

import Cocoa

var str = "Hello, playground"

定义Class类

测试类

swift代码:

class Test{
    //定义一个变量属性
    var name :String? = "Tom" {
//        willSet{
//            print("name_value-changeAfter:\(newValue)")
//        }
//        didSet{
//            print("name_value-changeBefore:\(oldValue)")
//        }

        //调换willSet和didSet两个方法的顺序
        //看效果
        didSet{
            print("name属性值被改变前的value:\(oldValue)")
        }
        willSet{
            print("name属性值将要变成:\(newValue)")
        }
    }
}

let test = Test()

test.name! = "Jason"

//test.name! = "Jack"

//test.name! = "张三"

//test.name! = "李四"

运行结果:

name属性值将要变成:Optional("Jason")
name属性值被改变前的value:Optional("Tom")

/********************************************************************************************************

总结:

swift的属性观察者,

使用属性观察者,就是实时查看属性value的变化,很实用的一个东西

属性观察者提供了两个属性和方法

oldValue和newValue两个属性

willSet和didSet两个方法

willSet这个函数会在属性value改变之前被调用,在方法中可以使用newValue属性来查看属性将要接受的新值

didSet这个函数会在属性value改变之后被调用,在方法中可以使用oldValue属性来查看属性value被改变前的一个过期值

方法顺序的问题,

属性的value被改变前,willSet方法先执行,didSet方法才会执行,即使将didSet方法放在willSet方法的前面

*********************************************************************************************************/

时间: 2024-07-29 15:25:37

swift_属性观察者的相关文章

属性观察者(监听属性的变化)

// 属性观察者, 用于监听属性变化, 在属性变化的时候调用 class Person { var name: String = "" { // 也可以写成willSet{}, 系统默认会传入一个名为newValue的参数 willSet(newValue) { print("name这个属性将被修改了, \(newValue)") } // 也可以写成didSet{} didSet(newValue) { print("name这个属性已经被修改了, \

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

属性观察者机制能让程序在属性被赋值时获得运行代码的机会,用来监视属性的除初始化之外的属性值变化,当属性值发生改变时能够对此作出响应 详细包含两个特殊的回调方法: willSet(newValue):被观察的属性即将被赋值之前自己主动调用方法. didSet(old Value):被观察的属性被赋值完毕之后自己主动调用该方法. 观察的范围 除了延迟存储属性之外的全部存储属性(包含实例存储属性或类型存储属性). 可通过重载方式为继承得到的属性(包含存储属性和计算属性)加入 属性观察者 定义语法格式

2008Swift 2.0学习笔记(Day 33)——属性观察者

原创文章,欢迎转载.转载请注明:关东升的博客 为了监听属性的变化,Swift提供了属性观察者.属性观察者能够监听存储属性的变化,即便变化前后的值相同,它们也能监听到. 属性观察者主要有以下两个: l willSet:观察者在修改之前调用. l didSet:观察者在修改之后立刻调用. 属性观察者的语法格式如下: 面向对象类型 类型名 { ... var 存储属性: 属性数据类型 = 初始化值 { willSet(新值) { //定义willSet观察者.“新值”是传递给willSet观察者的参数

Swift - 属性观察者(willSet与didSet)

属性观察者,类似于触发器.用来监视属性的除初始化之外的属性值变化,当属性值发生改变时可以对此作出响应.有如下特点: 1,不仅可以在属性值改变后触发didSet,也可以在属性值改变前触发willSet. 2,给属性添加观察者必须要声明清楚属性类型,否则编译器报错. 3,willSet可以带一个newName的参数,没有的话,该参数默认命名为newValue. 4,didSet可以带一个oldName的参数,表示旧的属性,不带的话默认命名为oldValue. 5,属性初始化时,willSet和did

Swift属性观察者

为了监听属性的变化,Swift提供了属性观察者,属性观察者能够监听存储属性的变化,即便变化前后的值不同,它们也能监听到,但它们不能延迟存储属性和常量存储属性的变化 Swift中的属性观察者主要有以下两种: 1.willSet:观察者在修改之前调用: 2.didSet:观察者在修改之后调用: 属性观察者的语法如下: 面向对象类型 类型名 { var 存储属性 : 属性数据类型 = 初始值 { willSet(新值){ } didSet(旧值){ } } } 示例 class Employee{ v

属性观察者willSet与didSet

在Swift中使用willSet和didSet这两个特性来监视属性的除初始化之外的属性值变化. willSet里面是新值,即属性即将要变为的值:didSet里面是旧值,即属性变化之前的值. import Foundation class People : NSObject { //普通属性 var firstName:String = "" var lastName:String = "" var nickName:String = "" //计

Swift学习笔记十:属性

1.存储属性       1. 作为特定类或结构实例的一部分,存储属性存储着常量或者变量的值.存储属性可分为变量存储属性(关键字var描述)和常量存储属性(关键字let描述). struct student{ let name = "" var score = 0 } let a = student(name:"小笨狼",score:96)           注意:                ① 定义储存属性时,需要为每一个属性定义一个默认值.在初始化的时候,

Swift语言精要 - 属性

1. Stored Property eg: var number: Int = 0 2. Computed Property eg: var area : Double { get { return width * height } ... } 完整代码如下: class Rectangle { var width: Double = 0.0 var height: Double = 0.0 var area : Double { // computed getter get { return

属性与下标

1.存储属性分为 常量属性(let) 和变量属性(var) 2.使用 lazy 定义延时加载,顾名思义 在第一次访问才会加载,如果不访问,永远都不回创建,这样减少内存占用. 3.属性观察者 willSet 在设置新的值之前调用 didSet在新值设置之后被调用. 4.计算属性 ,提供 getter(取值访问器) setter(设置访问器) 5.static 静态属性. 6.数组和字典 都可以使用下标访问,例如:var status : String[]=["1","2&quo