swift 关键字willSet 和 didSet

// 下面是苹果给出的解释,就是在给属性设置新值的时候,可以在设置前和设置后做一些处理,这两个关键字就好像对该属性变化的监控

If you don’t need to compute the property but still need to provide code that is run before and after setting a new value, use willSet and didSet. For example, the class below ensures that the side length of its triangle is always the same as the side length of its square.

// 代码说明

class man:NSObject{
    
    var isYoung:Bool
    
    var name:String = "无名氏"
    {
     
        willSet{
            
            println("will set name to \(name)")
        }
        
        didSet{
            
            println("did set name from \(oldValue) to \(name)")
        }
    }
    
    var age:Int = 0{
        willSet{
            println("Will set age to \(age)")
        }
        
        didSet{
            println("did set age from \(oldValue) to \(age)")
            if age < 18{
                isYoung = true
            }
            else{
               isYoung = false
            }
        }
    }
    // 对于未设置初始值的属性变量,创建时要初始化
    init(isyong:Bool){
        self.isYoung = isyong

super.init()
    }
    
}

let gentleMan:man = man(isyong: false)
gentleMan.name = "张 三"
gentleMan.age = 17
gentleMan.isYoung

输出结果:

will set name to 无名氏
did set name from 无名氏 to 张 三
Will set age to 0
did set age from 0 to 17

时间: 2024-10-10 22:06:37

swift 关键字willSet 和 didSet的相关文章

Swift中的willSet与didSet

Swift中的willSet与didSet 周银辉 在Swift语言中用了willSet和didSet这两个特性来监视属性的除初始化之外的属性值变化 无需说太多,看看下面的代码你就能很快明白的 import Foundation class People : NSObject { //普通属性 var firstName:String = "" var lastName:String = "" var nickName:String = "" /

swift语言的学习笔记十一(willSet与didSet)

在Swift语言中用了willSet和didSet这两个特性来监视属性的除初始化之外的属性值变化 无需说太多,看看下面的代码你就能很快明白的 复制代码 import Foundation class People : NSObject { //普通属性 var firstName:String = "" var lastName:String = "" var nickName:String = "" //计算属性 var fullName:St

Swift - 属性 - 属性监视器(didSet、willSet)

属性监视器 1.属性监视器功能 属性观察器控 制和响应属性的变化, 每次属性被设置值的时候会调用属性观察器,甚至新的值和旧的值相同的时候也不例外. 可以通过重载属性的方法为继承的谁能够(包括存储属性和计算属性)添加属性观察器 注意: 不需要为无法重载的计算属性添加属性观察器, 因为可以通过setter直接监控和响应值的变化 2.属性监视器方法 1. willSet 功能: 在设置新的值之前调用 介绍: illSet 观察器会将新的属性值作为固定参数传入,在willSet的事项代码中可以为这个参数

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

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

iOS开发——Swift篇&amp;Swift关键字详细介绍

Swift关键字详细介绍 每一种语言都有相应的关键词,每个关键词都有他独特的作用,来看看swfit中的关键词: 关键词: 用来声明的: “ class, deinit, enum, extension, func, import, init, let, protocol, static, struct, subscript, typealias, var.” 用于子句的: “ break, case, continue, default, do, else, fallthrough, if, i

属性观察器willSet与didSet

willSet与didSet是swift特有的,就是监听属性值的变化,但有一个小注意点. willSet与didSet调用时机:对象创建后的第一次赋值时开始调用.也就是说,初始化时(包含重载的init或重写的init)不会调用. 1 var name:String?{ 2 willSet{ 3 print("新值:\(newValue):旧值:\(name)") 4 } 5 didSet{ 6 print("旧值:\(oldValue):name = \(name)"

属性观察者willSet与didSet

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

存储型变量监视器和属性监视器willset与didset

可以用willset和didset监视器来声明一个存储型变量或属性. var num= 0 { willSet(setter name) { //do something here   } didSet(setter name) { //do something here  } } 当变量或属性的值被改变时,willset和didset监视器提供了一个监视方法(适当的回应). 监视器在变量或属性第一次初始化时不会被运行,只有在值被外部改变时才会被运行. willset监视器只有在变量或属性值被改

Swift 关键字汇总

常见的关键字有以下4种 与声明有关的关键字:class.deinit.enum.extension.func.import.init.let.protocol.static.struct.subscript.typealias和var. 与语句有关的关键字:break.case.continue.default.do.else.fallthrough.if.in.for.return.switch.where和while. 表达式和类型关键字:as.dynamicType.is.new.supe