iOS weak原理源码探究

iOS weak原理源码探究

x:4gx.png

  • 用编程计算机看二进制位

iOS weak原理源码探究

  • 可以看到extra_rc0000 0000,它的值是引用计数减1,所以引用计数为0+1=1

再new一个obj持有看看

NSObject *obj = [[NSObject alloc]init];
NSObject *obj1 = obj;

iOS weak原理源码探究

x:4gx1.png

iOS weak原理源码探究

extra_rc1.png

  • 可以看到extra_rc变成0000 0001了,引用计数为1+1=2

下面再来验证一下weak引用

NSObject *obj = [[NSObject alloc]init];
__weak NSObject *weakObj = obj;
  • weak不会增加引用计数,那么这里obj引用计数还是1,而且weakly_referenced位应该为1。

iOS weak原理源码探究

x:4gx_weak.png

iOS weak原理源码探究

weakly_referenced.png

  • 可以看出weakly_referenced确实变成1了,而引用计数还是0+1=1,符合预期。

end

文章均来自互联网如有不妥请联系作者删除QQ:314111741 地址:http://www.mqs.net/post/13731.html

相关阅读

添加新评论