Swift中运用didSet方法时的注意事项

Swift已经出了很长的一段时间了,好多项目已经开始着手用Swift来写了,现在给大家聊聊

运用属性观察者 - didSet方法需要注意的事项:

didSet方法:在新的值被设定后立即调用。

偶然一说大家估计不知道它到底有什么用处,在实际项目开发中,估计经常会遇到这样的需求:

我有两个变量,分别为a,b。但是有一点特殊b变量需要依赖a变量,说白了就是b必须a有值了

才能够设定。

说了它在实际项目中的用处,大家可以想象下,用处还是比较多了。今天就聊聊运用它需要的注意事项,

我们先来看3个例子:

开始我创建了一个Student类,当调用didSet方法时,会打印“调用了didSet方法”,代码如下:

import UIKit

class Student: NSObject {
    
    var name: String? {
        didSet {
            print("调用了didSet方法")
        }
    }
    
    override init() {
        
    }
    init(name: String) {
        self.name = name
    }
    
    func testDidSet() {
        name = "Ocean"
    }
}

然后通过点击屏幕对Student类进行调用:

第一种情况,代码如下:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        
        let student = Student()
        student.name = "Ocean"
    }

输出结果:


第二种情况,代码如下:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        
        let student = Student(name: "Ocean")
        print(student.name)
    }

输出结果:


第三种情况,代码如下:

 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        
        let student = Student()
        student.testDidSet()
    }

输出结果:


不防,大家可以观察下,上面的三种情况,为什么第二种没有调用didSet方法

能不能发现什么呢?

第二种情况,没有调用init方法。

根据官方文档,我们可以得出结论:

在初始化的时候赋值,是不调用didSet方法的。










评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值