Swift中运用didSet方法时的注意事项
2016-09-23 21:48
411 查看
Swift已经出了很长的一段时间了,好多项目已经开始着手用Swift来写了,现在给大家聊聊
运用属性观察者 - didSet方法需要注意的事项:
didSet方法:在新的值被设定后立即调用。
偶然一说大家估计不知道它到底有什么用处,在实际项目开发中,估计经常会遇到这样的需求:
我有两个变量,分别为a,b。但是有一点特殊b变量需要依赖a变量,说白了就是b必须a有值了
才能够设定。
说了它在实际项目中的用处,大家可以想象下,用处还是比较多了。今天就聊聊运用它需要的注意事项,
我们先来看3个例子:
开始我创建了一个Student类,当调用didSet方法时,会打印“调用了didSet方法”,代码如下:
然后通过点击屏幕对Student类进行调用:
第一种情况,代码如下:
输出结果:
第二种情况,代码如下:
输出结果:
第三种情况,代码如下:
输出结果:
不防,大家可以观察下,上面的三种情况,为什么第二种没有调用didSet方法?
能不能发现什么呢?
第二种情况,没有调用init方法。
根据官方文档,我们可以得出结论:
在初始化的时候赋值,是不调用didSet方法的。
运用属性观察者 - 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方法的。
相关文章推荐
- Swift基础--Swift中的分类以及在分类中扩展init方法的注意事项
- Swift中KVO(监听)的使用方法及注意事项
- Swift中KVO(监听)的使用方法及注意事项
- QuickWAP 2.x注册方法和购买注意事项
- CTE的使用方法和注意事项
- ExecuteReader方法中CommandBehavior.CloseConnection的一些注意事项
- 用户控件的一些常用方法和注意事项
- SPFile.Move方法注意事项
- struts2.0-注意事项1则-action中setter-getter方法与bean class文件的getter-setter不同!!
- asp Recordset.GetRows方法注意事项
- VS2005单元测试的方法与注意事项
- Tomcat安装配置及注意事项,jsp,servlet,javabean建立方法及注意事项!
- DELPHI中调用DLL的方法和一些注意事项和技巧
- PYTHON+APACHE的方法及注意事项
- VB StrConv方法使用注意事项
- JavaScript中的new的使用方法与注意事项
- 将WAV文件做到EXE文件的方法及注意事项
- 报考计算机专业硕士研究生的注意事项和专业课复习方法
- VC++调用Web Service的方法及注意事项
- STL中heap的使用方法及注意事项(msdn2003中未提及)