Swift回忆录-属性

前端之家收集整理的这篇文章主要介绍了Swift回忆录-属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Swift回忆录-属性

存储属性

存储属性:存储在特定类或结构体实例里的一个常量或变量

延迟存储属性 :当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用 lazy 来标示一个延迟存储属性

例:

  1. class score{
  2.  
  3. var totalscore : Int?
  4. }
  5.  
  6. class Student{
  7. //存储属性
  8. let name : String? = nil
  9. var num : Int?
  10. //延迟存储属性
  11. lazy var score = score()
  12. }

延迟存储属性必须声明为变量(var),因为属性的初始值可能在实例构造完成之后才会得到,而常量属性在构造过程完成之前必须要有初始值,因此无法声明成延迟属性

计算属性

计算属性:直观点来说就是给属性提供一个 getter 和一个可选的 setter,来间接获取和设置其他属性或变量的值

例:

  1. class Student{
  2.  
  3. var core : Int = 0
  4.  
  5. var totalscore : Int {
  6.  
  7. get{
  8. return core + 100
  9. }
  10.  
  11. /** set(newscore){ core = newscore }**/
  12. //备注-1
  13. set{
  14. core = newValue
  15. }
  16. }
  17. }
  18.  
  19. var stu = Student()
  20. stu.core = 90
  21. print(stu.totalscore) //190
  22. stu.totalscore = 60
  23. print(stu.core) //60

备注-1 :如果计算属性的 setter 没有定义表示新值的参数名,则可以使用默认名称 newValue。

只读计算属性

只读计算属性 : 只有 getter 没有 setter 的计算属性

例:

  1. class Student{
  2.  
  3. var core : Int = 0
  4.  
  5. /** 备注-2 var totalscore : Int { get{ return core + 100 } } **/
  6. var totalscore : Int {
  7. return core + 100
  8. }
  9. }
  10.  
  11. var stu = Student()
  12. stu.core = 90
  13. print(stu.totalscore) //190

备注-2 :只读计算属性的声明可以去掉 get 关键字和花括号

属性观察器

属性观察器 : 作用于监控和响应属性值的变化,Swift中提供了两个观察器:

  • willSet :新的值被设置之前调用
  • didSet :新的值被设置之后立即调用

willSet 观察器会将新的属性作为常量参数传入,如果不为该参数指定名称,可使用默认名称newValue

同样,didSet观察器会将旧的属性作为参数传入,如果不为该参数指定名称,可使用默认名称oldValue

例:

  1. class Student{
  2.  
  3. var totalscore : Int = 10{
  4.  
  5. willSet(newTotalscore){
  6. print("willSet:\(newTotalscore)")
  7. }
  8.  
  9. didSet{
  10. print("didSet:\(oldValue)")
  11. }
  12. }
  13. }
  14.  
  15. var stu = Student()
  16. stu.totalscore = 100
  17. //"willSet:100\n"
  18. //"didSet:0\n"
  19. print(stu.totalscore) //100

猜你在找的Swift相关文章