引用计数仅仅应用于类的实例
1 自动引用计数的工作机制
每次创建一个类的新的实例的时候,ARC会分配一块内存来储存该实例信息(包含实例的类型信息,以及这个实例所有相关的存储型属性的值)。
ARC会跟踪和计算每一个实例正在被多少属性,常量和变量所引用。
引用数为0时,内存释放。
2 🌰
1 | class Person { |
3 类实例之间的循环强引用
1 | class Person2 { |
4 解决实例之间的循环强引用
弱引用(weak reference)和无主引用(unowned reference)允许循环引用中的一个实例引用另外一个实例而不保持强引用。
- 4.1 弱引用:弱引用必须被声明为变量,表明其值能在运行时被修改。
weak
1 | class Person3 { |
- 4.2 无主引用
unowned
和弱引用不同的是,无主引用是永远有值的。
Customer是客户,CreditCard是信用卡。客户可以有或五信用卡,但信用卡必须有对应的用户。
1 | class Customer { |
- 4.3 无主引用以及隐式解析可选属性
1 | class Country { |
5 闭包引起的循环强引用
6 解决闭包引起的循环强引用
playground文件在andyRon/LearnSwift