Swift中 堆(heap)和栈(stack)的区别

2023-03-07,,

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对结构体已经进行了很大的优化
*/

Swift中 堆(heap)和栈(stack)的区别的相关教程结束。

《Swift中 堆(heap)和栈(stack)的区别.doc》

下载本文的Word格式文档,以方便收藏与打印。