swift中屬性是描述特定類、結構或者列舉的值,可以分為以下幾種:
1.儲存屬性(stored properties)
2.計算屬性(computed properties)
3.型別屬性(type properties)
儲存屬性:
//儲存屬性就是例項物件的該屬性不需要自己額外實現方法,直接簡單明瞭->訪問原始值
struct
name
計算屬性:
//計算屬性就是例項物件的該屬性是根據其他資料算出自己本身的值,必須自己實現get方法,set可選實現
structname
// set
}}
型別屬性:
//型別屬性簡單的說就是計算屬性或儲存屬性從例項物件使用轉變到類使用...但是無法實現willset didset屬性監聽 可以通過set//------------------------結構體---------------------
struct
teststruct
teststruct.typepropertyinstructorenum;
//------------------------列舉---------------------
enum
testenum
}testenum.typepropertyinstructorenum;
//------------------------類---------------------
class
testclass
}testclass.typepropertyinclass
屬性監聽:
儲存屬性可以新增如下的乙個或全部監視器:
willset監視器會將新的屬性值作為固定引數傳入,在willset的實現**中可以為這個引數指定乙個名稱,如果不定義引數使用預設名稱newvalue表示。
didset監視器會將舊的屬性值作為引數傳入,可以自己定義的引數命名或者使用預設引數名oldvalue。
structname
didset
//didset(val)
} var lastname :string
//儲存屬性
var fullname :string
//計算屬性,沒有get set宣告,預設生成get,唯讀}//
初始化時監聽無效的
var name = name(firstname: "
onebyte
", lastname: "yy"
)//下面這句監聽有效
name.firstname = "11"
//log :
//firstname 將從 onebyte 改變到 11
//firstname 已從 onebyte 改變到 11
而計算屬性則在set裡面實現監聽:
structname
set }
}
注意點:
name.firstname = "11" 呼叫的是 name例項中的firstname的setvar nfirtnamestr = name.firstname 呼叫的是name例項中firstname的get
所以不能在get中取firstname的值,或者set中設定firstname中的值,不然造成死迴圈 bad_access
Swift學習筆記 屬性
定義乙個屬性 struct fixedlengthrange fixedlengthrange這個類裡面有兩個屬性,乙個為 firstvalue int 為可變型別,另外乙個為 length 為不可變型別 屬性賦值 var rangeofthreeitems fixedlengthrange fir...
Swift學習筆記 屬性
屬性分為儲存屬性與計算屬性,儲存屬性可以有預設值,計算屬性則根據已有資訊返回某種計算結果。類,結構體,列舉都可以有屬性 不使用 獲取值的屬性都是基本儲存屬性,包括讀寫屬性 var 宣告 以及唯讀屬性 let宣告 和巢狀函式一樣,型別也可以巢狀 class person 顏色 var color co...
Swift學習筆記 八 屬性
儲存屬性 儲存常量或變數作為例項的一部分 計算屬性計算 而不是儲存 乙個值。計算屬性 可以用於類 結構體和列舉裡 儲存屬性只能用於類和結構體.儲存屬性 簡單來說,乙個儲存屬性就是儲存在特定類或結構體的例項裡的乙個常量或變數,儲存屬性可以是變數儲存屬性 用關鍵字 var定義 也可以是常量儲存屬性 用關...