Swift

Swift:结构体、类与闭包

2021-07-06  本文已影响0人  码小菜

目录
一,结构体
二,类
三,闭包

一,结构体

1,介绍
2,实例
3,值类型

1>结构体是值类型
2>值类型在赋值或传参时,会产生深拷贝
3>在函数内部使用时,变量和成员都存储在栈空间
4>如果将值类型声明为常量,那么变量和成员都不能被修改

4,内存

二,类

1,介绍
2,实例
3,引用类型

1>类是引用类型
2>引用类型在赋值或传参时,会产生浅拷贝
3>在函数内部使用时,变量存储在栈空间,成员存储在堆空间
4>堆空间的前16个字节用来存储类型信息和引用计数
5>如果将引用类型声明为常量,那么变量不能被修改,而成员可以被修改

4,值类型和引用类型
5,内存

三,闭包

1,闭包表达式
2,尾随闭包
3,自动闭包
4,变量捕获

number存储在栈空间,当test函数执行完就会销毁,但plus函数还会用到它,所以就将number捕获到堆空间,以延长它的寿命

第19行代码
1>将plus函数的地址存储到ps变量的前8个字节中
2>申请一份堆空间:类型信息占8个字节、引用计数占8个字节、number的值占8个字节
3>将堆空间的地址存储到ps变量的后8个字节中

第20、21、22行代码
1>从ps变量中取出plus函数和堆空间的地址
2>调用plus函数并将2、3、4和堆空间的地址作为参数传递进去
3>从堆空间中取出number的值,与2、3、4相加之后再存储进去

第19行代码

第20行代码

5,闭包
6,捕获时机
上一篇 下一篇

猜你喜欢

热点阅读