6.9 实例的交叉引用和弱引用(weak) [Swift原创教程]

原文:http://coolketang.com/staticCoding/5a99261ffe88c21c80b14c31.html

1. 本节课将通过一个实例,演示内存的泄露问题以及如何修复。 



2. 首先定义一个用来创建实例的类。 


3. 给类添加一个属性。 


4. 添加第二个属性,该属性的类型是一个自定义的类。我们将在后面的代码中实现该类。 


5. 添加一个初始化方法,以对名称属性进行设置。 


6. 接着添加一个析构方法,当该类的实例的引用计数为0时,该方法将被调用。 


7. 然后实现另一个自定义类。 


8. 给类添加两个属性,第二个属性的类型是第一个自定义类。这样两个类型的实例,就形成了相互引用的状态。 


9. 添加一个初始化方法,以对名称属性进行设置。 


10. 接着添加一个析构方法,当该类的实例的引用计数为0时,该方法将被调用。 


11. 声明两个自定义类型的对象。 


12. 接着对两个对象进行初始化操作,然后点击显示调试区图标,打开控制台。 


13. 在控制台显示了两个对象的初始化日志。 


14. 接着分别设置两个对象的实例属性,使两者相互交叉引用。 


15. 此时将两个实例对象设置为空,发现并没有在底部的控制台输出析构日志,说明它们的引用计数不为零。点击垂直滚动条,查看上方的内容。 


16. 那么如何避免因为交叉引用,而造成的内存泄露呢,我们只需要对其中一个引用稍加修改。 


17. 在声明变量的前方,增加了weak弱引用标识符,向编译器说明不希望持有对该实例的引用。此时在控制台输出了析构日志,说明内存已经被正常释放了。 


本文整理自:《Swift4互动教程》,真正的 [手把手]教学模式,用最快的速度上手iOS开发和Swift语言,苹果商店App Store免费下载: https://itunes.apple.com/cn/app/id1320746678 ,或扫描本页底部的二维码。课程配套素材下载地址: 资料下载


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李发展

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值