美文网首页ios面试题
当weak引用指向的对象被释放时,又是如何去处理weak指针的呢

当weak引用指向的对象被释放时,又是如何去处理weak指针的呢

作者: 充满活力的早晨 | 来源:发表于2018-04-09 17:48 被阅读31次
1、调用objc_release

2、因为对象的引用计数为0,所以执行dealloc

3、在dealloc中,调用了_objc_rootDealloc函数

4、在_objc_rootDealloc中,调用了object_dispose函数

5、调用objc_destructInstance

6、最后调用objc_clear_deallocating,详细过程如下:

a. 从weak表中获取废弃对象的地址为键值的记录

b. 将包含在记录中的所有附有 weak修饰符变量的地址,赋值为 nil

c. 将weak表中该记录删除

d. 从引用计数表中删除废弃对象的地址为键值的记录

[摘自文章](https://mp.weixin.qq.com/s?__biz=MzUxODI3MjY2Ng==&mid=2247484668&idx=1&sn=f955f9c90c3705dcd00128ecd8e28c6a&chksm=f98a2709cefdae1f451857a6956a26fea8effa968f7815595942dff1c2d23035f8ad34bb1e53&scene=38#wechat_redirect

相关文章

  • iOS weak指针置nil具体过程

    先看一下delloc的具体实现: dealloc的实现 weak指针置nil 当weak引用指向的对象被释放时,我...

  • 当weak引用指向的对象被释放时,又是如何去处理weak指针的呢

    [摘自文章](https://mp.weixin.qq.com/s?__biz=MzUxODI3MjY2Ng==&...

  • __weak简析

    当一个 __weak 类型的指针指向的对象被释放时,该指针会自动被置成nil,因此__weak关键字修饰的指针又被...

  • OC--看objc源码认识weak

    weak修饰有什么用? 声明为weak的指针,weak指针指向的对象一旦被释放,weak的指针都将被赋值为nil ...

  • [iOS] weak实现流程

    1. weak关键字 用weak关键字修饰的对象指针是弱引用,被引用对象的引用计数不会+1,并在引用对象被释放的时...

  • Weak生命周期是怎么样的

    我们都知道weak表示的是一个弱引用,这个引用不会增加对象的引用计数,并且在所指向的对象被释放之后,weak指针会...

  • weak与assign的区别

    weak与assign的唯一区别在于,当指向的对象被释放掉之后,weak指针会自动置为nil。而assign指针会...

  • weak和assign的区别

    都不是强指针(不是强引用),不能保住对象的命weak:__weak弱指针,不会让引用计数器+1,如果指向对象被销毁...

  • @property关键字

    1.weak: weak,弱指针,不会让引用计数器+1,如果指向对象被销毁,指针会自动置nil weak原理: r...

  • 属性关键字

    (weak,assign,Strong,copy) weak: 弱指针, 在对象一创建后就会被释放, 继续引用的时...

网友评论

    本文标题:当weak引用指向的对象被释放时,又是如何去处理weak指针的呢

    本文链接:https://www.haomeiwen.com/subject/lpnihftx.html