您好,登錄后才能下訂單哦!
與結(jié)構(gòu)體、枚舉的異同
相同點(diǎn):
a. 都可以定義屬性保存數(shù)據(jù),定義方法實(shí)現(xiàn)功能
b. 都可以定義下標(biāo)方法
c. 都可以定義構(gòu)造方法
d. 都可以遵循協(xié)議
e. 都可以使用分類(擴(kuò)展)
不同點(diǎn):
a. 類支持繼承和擴(kuò)展
b. 結(jié)構(gòu)體還支持一種成員構(gòu)造方法
c. 類支持析構(gòu)方法
d. 類的實(shí)例對(duì)象使用ARC管理內(nèi)存
e. 類為”引用類型”,結(jié)構(gòu)體和枚舉為“值類型”
值類型與引用類型的特點(diǎn)
值類型的特點(diǎn):
a. 在賦值以及函數(shù)傳遞過(guò)程中,傳遞的是副本
b. 值類型包含特殊的方法:變質(zhì)方法
引用類型的特點(diǎn):
a. 在賦值以及函數(shù)傳遞過(guò)程中,傳遞的不是副本而是現(xiàn)有實(shí)例對(duì)象的引用
b. 兩個(gè)實(shí)例對(duì)象是否為同一引用,使用運(yùn)算符 === !== 進(jìn)行判斷
變質(zhì)方法:
是值類型特有的一種方法,shiyongmutating關(guān)鍵字修飾
當(dāng)方法內(nèi)部修改該了結(jié)構(gòu)體變量中的數(shù)值時(shí)需要聲明為變質(zhì)
包括:修改了成員、修改了self等
如:
struct Animal {
var name:String = ""
mutating func changeSelf() {
self = Animal(name: "Animal")
}
}
var a1 = Animal(name: "abc")
a1.changeSelf()
print(a1.name) //“Animal"
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。