美文网首页
weak介绍

weak介绍

作者: FRAJ | 来源:发表于2019-05-22 11:26 被阅读0次

weakruntime维护的一个hash表,用于存储指向某一个对象的所有指针。weak表其实是一个hash表,key是所指对象的指针,valueweak指针的地址(这个地址的值是所指对象指针的地址)数组。

  1. 初始化时:runtime会调用objc_initWeak函数,初始化一个新的weak指针指向对象的地址。
  2. 添加引用时:objc_initWeak函数会调用objc_storeWeak()函数,objc_storeWeak()的作用是更新指针的指向,创建对应的弱引用表。
  3. 释放时:调用clearDeallocating函数。clearDeallocating函数首先根据对象地址获取所有weak指针地址的数组,然后遍历这个数组把其中的数据设为nil,最后把这个entryweak表中删除,最后清理对象的记录。

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

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

相关文章

  • weak介绍

    weak是runtime维护的一个hash表,用于存储指向某一个对象的所有指针。weak表其实是一个hash表,k...

  • 三、weak 探究

    1、weak基本介绍: weak是弱引用,用weak来修饰、描述所引用对象的计数器并不会加1,而且weak会在...

  • iOS基础知识(二)weak原理

    一、weak基本介绍   weak是弱引用,用weak来修饰、描述所引用对象的计数器并不会加1,而且weak会在引...

  • iOS-assgin与weak的根本区别

    本文介绍 iOS 中 assgin 与 weak 的区别 首先是 weak 的使用:一般用于修饰控件: 当点击屏幕...

  • iOS招聘面试问题(2018-XM)

    1、自我介绍。 2、声明可变数组可以用weak修饰吗?和用strong修饰有什么区别? 答案:数组怎么能用weak...

  • 2018-06-27 关于@property内属性的进一步理解

    以下内容参考自IOS中@property的属性weak、nonatomic、strong、readonly等介绍@...

  • OC Runtime之Weak(2)---weak_entry_

    上一篇文章主要介绍了弱引用的基本概念,以及weak_table_t的基本结构和实现。weak_entry_t是we...

  • (七)weak 关键字

    前言 weak弱引用,前面提到了,没有深入写,参考iOS深入学习之Weak关键字介绍这篇文章写一点,对于文章的后半...

  • Block循环引用

    __weak __weak LDPerson *weakPerson = person__weak typeof(...

  • weak、strong、@ property

    面试题:weak实现原理? 一、weak weak 基本用法 weak 是弱引用,用 weak 来修饰、描述所引用...

网友评论

      本文标题:weak介绍

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