class 與 struct 的主要區(qū)別:類是引用類型,而結(jié)構(gòu)體是值類型洒闸。
沒圖說個J8,好染坯,看圖說話。
class 引用類型
//類 - 引用類型
class 未成型人類 {
var 身高 = 168
init() { }
init(身高: Int) {
self.身高 = 身高
}
}
let 小華 = 未成型人類()
let 大明 = 未成型人類(身高: 200)
let 黑仔 = 大明
let 高佬 = 大明
高佬.身高 += 10
print(大明.身高) // = 210
let 小高 = 高佬
小高.身高 += 10
print(大明.身高) // = 220
struct 值類型
//結(jié)構(gòu)體 - 值類型
struct 克隆人 {
var 身高 = 180
init() { }
init(身高: Int) {
self.身高 = 身高
}
}
var 小A = 克隆人()
小A.身高 = 122
let cokeA = 小A
print(cokeA.身高) // = 122
print(小A.身高) // = 122
let 小B = 克隆人()
print(小A.身高) // = 180
什么時候使用類丘逸? 什么時候使用結(jié)構(gòu)體单鹿?
注意:雖說賦值時候值類型表面上經(jīng)常要執(zhí)行拷貝現(xiàn)象,但 Swift 在管理所有的值拷貝會確保性能最優(yōu)化深纲,所以我們沒有必要去回避賦值來確保性能最優(yōu)化羞反。
/* 什么時候使用類? 什么時候使用結(jié)構(gòu)體囤萤?
一般情況下昼窗,可以:
1? 把類看成是物體
如: 人、車涛舍、動物澄惊、商店等..一般跟生物沾邊多
比如一個人有少屬性,雖有不同人種富雅,但是他們很多屬性都是一樣的掸驱,使用類的繼承關(guān)系,很好描述人這一類東東...
2? 把結(jié)構(gòu)體看作值
如:位置(經(jīng)緯度)没佑、坐標(biāo)毕贼、溫度等..一般跟物理沾邊多
結(jié)構(gòu)體比類更加 “輕量級”,因為結(jié)構(gòu)體的內(nèi)存空間是開在系統(tǒng)的棧中蛤奢,而類則開在系統(tǒng)的堆中鬼癣。當(dāng)然對于小程序來說陶贼,可以忽略不計。
還有什么時候使用也不是絕對的待秃,因為他們都有很多類似的地方拜秧,也看個人習(xí)慣思維愛好之類。何況現(xiàn)在 Swift 還有給力協(xié)議這東西章郁,所以原來只能通過類來實現(xiàn)的枉氮,也可以通過協(xié)議+來實現(xiàn)。