1、内存空间分为堆空间和栈空间
2、堆->引用类型(对象、函数、闭包) 栈->值类型(结构体、枚举、元组)
3、值类型赋值->深拷贝 引用类型赋值->浅拷贝
let a = 1
let c = a
// 值类型赋值会生成一个全新的c
// 引用类型赋值则是指向之前的对象的内存地址
4、结构体与类的区别
// 结构体
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
/* 分析
定义两个模型,一个是结构体,一个是类
结构体是存在于栈中的值类型,赋值相当于深拷贝即拷贝一个全新的模型
类是存在于堆中的引用类型,赋值相当于浅拷贝之前模型的内存地址<所以定义模型时可以用let 定义 定义pc其实是personC() 的内存地址 - 后续修改也是拿到内存地主对应的模型进行修改>
swift建议都使用struct, swift对结构体已经进行了很大的优化
*/