在Swift语言中用了willSet和didSet这两个特性来监视属性的除初始化之外的属性值变化

无需说太多,看看下面的代码你就能很快明白的

import Foundationclass People : NSObject
{//普通属性var firstName:String = ""var lastName:String  = "" var nickName:String = "" //计算属性  var fullName:String { get { return nickName + " " + firstName + " " + lastName } } //带属性监视器的普通属性 var age:Int = 0 { //我们需要在age属性变化前做点什么  willSet { println("Will set an new value \(newValue) to age") } //我们需要在age属性发生变化后,更新一下nickName这个属性  didSet { println("age filed changed form \(oldValue) to \(age)") if age<10 { nickName = "Little" }else { nickName = "Big" } } } func toString() -> String { return "Full Name: \(fullName) " + ", Age: \(age) " } } var me = People() me.firstName = "Zhang" me.lastName = "San" me.age = 20 println(me.toString()) /*程序输出 Will set an new value 20 to age age filed changed form 0 to 20 Full Name: Big Zhang San , Age: 20 */

转载于:https://www.cnblogs.com/Free-Thinker/p/5066852.html

Swift中的willSet与didSet相关推荐

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

    属性观察者,类似于触发器.用来监视属性的除初始化之外的属性值变化,当属性值发生改变时可以对此作出响应.有如下特点: 1,不仅可以在属性值改变后触发didSet,也可以在属性值改变前触发willSet. ...

  2. Swift中@IBDesignable/@IBInspectable的使用

    IB可视化属性调节视图-@IBDesignable/@IBInspectable的使用 在工程中新建一个swift类(继承UIView),将它与某个view关联起来. 在文件中添加下面的代码 //可以 ...

  3. Swift 中的关键字详解

    转载自:https://www.cnblogs.com/liYongJun0526/p/7522130.html 要学习Swift这门语言,就必须先了解Swift的关键字及对应的解释.这里就列一下在S ...

  4. swift视图容器_如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图...

    swift视图容器 by Lee Dowthwaite 通过李道思韦特 如何使用IBDesignable在Swift中创建漂亮的,可重复使用的渐变视图 (How to create a beautif ...

  5. 关于Swift中Struct,Class和Enum的哪些事儿

    前言 Swift type System Swift是强类型的,尽管只有六种类型. 命名类型: protocol, class , struct , enum 复合类型:tuple, function ...

  6. 记OC迁移至swift中笔记20tips

    写久了OC后来写swift,总感觉写着是swift的皮毛,但是实际上是OC的核心,这里整理了OC迁移至swift中的一些小细节. 1 在当前类中,实例方法调用属性以及方法都可以将self省略掉,而且是 ...

  7. 解决Swift中present(uiImagePickerController,animated: true,completion: nil)闪退的问题

    swift中开发选择图片上传,会使用到Tap Gesture Recognizer控件,对应 UITapGestureRecognizer API,以下是代码示例(取自IOS developer li ...

  8. Swift 中使用 SQLite——批量更新(事务处理)

    本文是Swift 中使用 SQLite系列的收官之作,介绍一下在数据库中的批量更新. 事务 在准备做大规模数据操作前,首先开启一个事务,保存操作前的数据库的状态 开始数据操作 如果数据操作成功,提交事 ...

  9. Swift 中使用 SQLite——打开数据库

    关于Swift中使用SQLite,接下来可能会分别从打开.增.删.改.查,几个方面来介绍SQLite的具体使用,这一篇重点介绍一下如何打开. 定义全局数据库访问句柄 /// 全局数据库访问句柄 pri ...

最新文章

  1. 透过计算机视觉,看看苏伊士运河堵船
  2. 微软ASP.NET MVC Beta版本发布
  3. php7和python3性能对比-ava、Python和PHP三者的区别
  4. 信号完整性分析心得体会_「职场技能」这8个常用信号完整性的测试手段,你知道几个?...
  5. java中的strictfp的作用
  6. Python 函数式编程,Python中内置的高阶函数:map()、reduce()、filter()与sorted(),Python中返回函数
  7. 快速排序 动图_Java十大排序算法最强总结
  8. qthread中获取当前优先级_Linux中强大的top命令
  9. python编程工时计算_Python编程题:两个日期间的天数统计(附代码)
  10. Python+pandas处理Excel文件中的超市营业额数据
  11. java中登陆界面怎么连接到下一个界面啊_JavaWeb登陆成功后跳转到上一个页面
  12. 高分选手讲解:如何突破思维圈限,从NLP角度挖掘新的解题思路
  13. 黑马博客——详细步骤(九)项目功能的实现之mongoDB数据库添加账号
  14. linux 查看 shell进程,Linux之shell 和进程
  15. 时间复杂度与空间复杂度小结
  16. AutoCAD DWG 读模块参数:处理块
  17. vue函数@click.prevent使用纪要
  18. TDM与FDM的比较
  19. PDF/OCR识别提取工具:Readiris Pro 17 for Mac
  20. C/C++时间戳转换函数

热门文章

  1. vs查询mysql返回数据_vs与数据库连接查询
  2. mysql 执行计划 改变_数据量增加导致mysql执行计划改变解决_MySQL
  3. Object Detection︱RCNN、faster-RCNN框架的浅读与延伸内容笔记
  4. 数据结构与算法14-栈和队列练习题
  5. 使用QT + cocos2dx制作工具
  6. 缓存热点问题解决方案
  7. 主流搜索引擎Lucene,Solr,ElasticSearch
  8. PyTorch 和 TensorFlow 引领未来
  9. Keras学习---RNN模型建立篇
  10. 华为y220t android版本升级,华为 Y220T(移动版)救砖教程 救砖包 刷回官方系统支持OTA升级...