1要门、內(nèi)存空間分為堆空間和棧空間
2尼啡、堆->引用類型(對象暂衡、函數(shù)、閉包) 棧->值類型(結(jié)構(gòu)體崖瞭、枚舉、元組)
3撑毛、值類型賦值->深拷貝 引用類型賦值->淺拷貝
let a = 1
let c = a
// 值類型賦值會生成一個(gè)全新的c
// 引用類型賦值則是指向之前的對象的內(nèi)存地址
4书聚、結(jié)構(gòu)體與類的區(qū)別
// 結(jié)構(gòu)體
struct personT{
var age = 10
var name = "張三"
}
var pt = personT()
var pt1 = pt
pt1.age = 20
print(pt.age) //10
// 類
class personC{
var age = 10
var name = "張三"
}
let pc = personC()
let pc1 = pc
pc1.age = 30
print(pc.age)//30
/* 分析
定義兩個(gè)模型,一個(gè)是結(jié)構(gòu)體,一個(gè)是類
結(jié)構(gòu)體是存在于棧中的值類型,賦值相當(dāng)于深拷貝即拷貝一個(gè)全新的模型
類是存在于堆中的引用類型,賦值相當(dāng)于淺拷貝之前模型的內(nèi)存地址<所以定義模型時(shí)可以用let 定義 定義pc其實(shí)是personC() 的內(nèi)存地址 - 后續(xù)修改也是拿到內(nèi)存地主對應(yīng)的模型進(jìn)行修改>
swift建議都使用struct, swift對結(jié)構(gòu)體已經(jīng)進(jìn)行了很大的優(yōu)化
*/