ios面试题

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

2018-04-09  本文已影响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

上一篇 下一篇

猜你喜欢

热点阅读