[swift 进阶]读书笔记-第五章:结构体和类 C5P7_8 闭包和内存

结构体和类

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"

注:捕获列表中的值的作用域只能在闭包内,闭包外无法使用。

文章源文件地址

你可能感兴趣的:([swift 进阶]读书笔记-第五章:结构体和类 C5P7_8 闭包和内存)