Swift中 堆(heap)和栈(stack)的区别
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对结构体已经进行了很大的优化 */