日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《从零开始学Swift》学习笔记(Day 33)——属性观察者

發布時間:2025/3/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《从零开始学Swift》学习笔记(Day 33)——属性观察者 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原創文章,歡迎轉載。轉載請注明:關東升的博客?

為了監聽屬性的變化,Swift提供了屬性觀察者。屬性觀察者能夠監聽存儲屬性的變化,即便變化前后的值相同,它們也能監聽到。

屬性觀察者主要有以下兩個:

l willSet:觀察者在修改之前調用。

l didSet:觀察者在修改之后立刻調用。

屬性觀察者的語法格式如下:

面向對象類型 類型名 { ...var 存儲屬性: 屬性數據類型 = 初始化值 {willSet(新值) { //定義willSet觀察者。“新值”是傳遞給willSet觀察者的參數,它保存了將要替換原來屬性的新值 ...} didSet(舊值) { //定義didSet觀察者。“舊值”是傳遞給didSet觀察者的參數,它保存了被新屬性替換的舊值。 ...} } }

屬性觀察者的語法格式比計算屬性要混亂。

屬性觀察者可以在類和結構體中使用,不能在枚舉中使用。

示例代碼如下:

class Employee {var no: Int = 0var name: String = "Tony" { willSet(newNameValue) { //定義name屬性的willSet觀察者,newNameValue是由我們分配的傳遞新值的參數名 print("員工name新值:\(newNameValue)") }didSet(oldNameValue) { //定義name屬性的didSet觀察者,oldNameValue是由我們分配的傳遞舊值的參數名 print("員工name舊值:\(oldNameValue)")}}var job: String?var salary: Double = 0var dept: Department?} struct Department { var no: Int = 10 { willSet { //定義no屬性的willSet觀察者,注意這里沒有聲明參數,但是我們可以在觀察者內部使用newValue print("部門編號新值:\(newValue)")}didSet { //定義no屬性的didSet觀察者,注意這里也沒有聲明參數,但是我們可以在觀察者內部使用oldValue print("部門編號舊值:\(oldValue)") ?}}var name: String = "RESEARCH"} var emp = Employee()emp.no = 100emp.name = "Smith" ? var dept = Department()dept.no = 30 ?

上述代碼運行結果如下:

員工name新值:Smith

員工name舊值:Tony

部門編號新值:30

部門編號舊值:10?

?

歡迎關注關東升新浪微博@tony_關東升。
關注智捷課堂微信公共平臺,了解最新技術文章、圖書、教程信息
? ? ? ? ? ? ? ? ? ? ? ? ? ?
更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.php

?

轉載于:https://www.cnblogs.com/iOS-Blog/p/4949238.html

總結

以上是生活随笔為你收集整理的《从零开始学Swift》学习笔记(Day 33)——属性观察者的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。