结构体和类
5.7 闭包和内存(结构体和类的使用实践)
本节总结:主要是用了类
、结构体
、纯函数
来表示一个银行账户的资金情况。
最后的结论:
类
:线程不安全。
结构体
:稳定,也不啰嗦
函数
:线程安全,但程序会变得啰嗦
5.8 闭包和内存(引用循环和捕获列表)
知识点:闭包会引起循环引用(该知识点同OC的block的循环引用,不赘述。)
weak 引用
这里就讲了一些循环引用的基本知识点,我相信大家OC过来的同学都明明白白的。大意是可以用[weak self]的捕获列表解决这个问题。
名词: 捕获列表
咋一看让人很费解,那什么是捕获列表
:
闭包里面对周围的常量或变量
进行的操作叫捕获
。
我们可以通过捕获列表去显示的控制
在闭包中的捕获值
。
闭包中的in前面的小框框[]
就是捕获列表,里面的值就是捕获列表的值。
var a = 0
var b = 0
/// a 就在捕获列表中,b没有
let closure = { [a] in
print(a, b)
}
a = 10
b = 10
closure()
// Prints "0 10"
注:捕获列表中的值的作用域只能在闭包内
,闭包外无法使用。
网友评论