iOS之深入解析weak关键字的底层原理

举报
Serendipity·y 发表于 2022/02/17 00:25:02 2022/02/17
【摘要】 一、weak 关键字 在 iOS 开发过程中,会经常使用到一个修饰词 weak,使用场景大家都比较清晰,避免出现对象之间的强强引用而造成对象不能被正常释放最终导致内存泄露的问题。 weak 关键字...

一、weak 关键字

  • 在 iOS 开发过程中,会经常使用到一个修饰词 weak,使用场景大家都比较清晰,避免出现对象之间的强强引用而造成对象不能被正常释放最终导致内存泄露的问题。
  • weak 关键字的作用是弱引用,所引用对象的计数器不会加 1,并在引用对象被释放的时候自动被设置为 nil。
  • weak 的常见场景是在 delegate,block,NSTimer 中使用,以避免循环引用所带来的内存泄漏。
  • weak 的用处用一句话可归纳为:弱引用,在对象释放后置为 nil,避免错误的内存访问。用更通俗的话来表述是:weak 可以在不增加对象的引用计数的同时,又使得指针的访问是安全的。

二、weak 的底层分析

① weak 底层入口
  • 当我们使用 weak 修饰属性的时候,它是怎么实现当所引用的对象被废弃的时候,变量置为 nil 的呢?在日常开发中,常见的 weak 的使用如下:
    id object = [[NSObject alloc] init];
    id __weak obj
  
 
  • 1

文章来源: blog.csdn.net,作者:Serendipity·y,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Forever_wj/article/details/117879195

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。