美文网首页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

    相关文章

      网友评论

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

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