美文网首页
runtime 如何实现 weak 属性

runtime 如何实现 weak 属性

作者: 星捷 | 来源:发表于2016-11-23 16:01 被阅读0次

weak 此特质表明该属性定义了一种“非拥有关系” (nonowning relationship)。为这种属性设置新值时,设置方法既不保留新值,也不释放旧值。此特质同 assign 类似, 然而在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。

那么 runtime 如何实现 weak 变量的自动置nil?

runtime 对注册的类, 会进行布局,对于 weak 对象会放入一个 hash 表中。 用 weak 指向的对象内存地址作为 key,当此对象的引用计数为0的时候会 dealloc,假如 weak 指向的对象内存地址是a,那么就会以a为键, 在这个 weak 表中搜索,找到所有以a为键的 weak 对象,从而设置为 nil。

相关文章

网友评论

      本文标题:runtime 如何实现 weak 属性

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