当前位置: 首页 > news >正文

凡科二级网站怎么做如何提高网站转化率

凡科二级网站怎么做,如何提高网站转化率,网络推广员的前景,代刷网站是怎么做的weak 引用在 iOS 中通过维护一个全局的弱引用表来实现。当弱引用的对象被释放时,所有指向它的弱引用会被自动置为 nil,从而防止悬挂指针。 弱引用表(Weak Table)的键和值 理解弱引用表的键和值对于理解 weak 引用的底层机制非常重…

在这里插入图片描述

weak 引用在 iOS 中通过维护一个全局的弱引用表来实现。当弱引用的对象被释放时,所有指向它的弱引用会被自动置为 nil,从而防止悬挂指针。

弱引用表(Weak Table)的键和值

理解弱引用表的键和值对于理解 weak 引用的底层机制非常重要。下面我详细解释一下这两个概念,并用示例和图表来说明。

键(Key)
  • 对象指针(Object Pointer):这是被 weak 引用的对象的内存地址。每个被 weak 引用的对象在弱引用表中都有一个对应的条目,其键就是这个对象的内存地址。
值(Value)
  • 弱引用指针集合(Set of Weak Reference Pointers):这是一个集合,包含了所有指向该对象的 weak 引用指针的地址。当一个对象有多个 weak 引用时,这些引用指针的地址都会记录在集合中。

具体示例

示例代码
Person *personInstance = [[Person alloc] init];
__weak Person *weakPerson1 = personInstance;
__weak Person *weakPerson2 = personInstance;

在这个示例中:

  • personInstance 是一个 Person 对象的强引用。
  • weakPerson1weakPerson2Person 对象的两个弱引用。
弱引用表表示
  1. 创建弱引用时
    • 假设 personInstance 的内存地址是 0x1000
    • weakPerson1 的内存地址是 0x2000
    • weakPerson2 的内存地址是 0x3000
Weak Table:
+-------------------+-------------------+
| Object Pointer    | Weak Reference(s) |
+-------------------+-------------------+
| 0x1000            | [0x2000, 0x3000]  |  // personInstance is referenced by weakPerson1 and weakPerson2
+-------------------+-------------------+

在这个弱引用表中:

  • 0x1000personInstance 的内存地址。
  • [0x2000, 0x3000] 是一个集合,包含了所有指向 personInstance 的弱引用指针(weakPerson1weakPerson2 的地址)。

对象释放时

personInstance 的引用计数变为零,系统准备释放该对象时,运行时会执行以下操作:

  1. 找到所有弱引用

    • 在弱引用表中查找键 0x1000,找到对应的值 [0x2000, 0x3000]
  2. nil

    • 0x20000x3000 地址上的值置为 nil
  3. 删除条目

    • 从弱引用表中删除键 0x1000 的条目。
Weak Table (before release):
+-------------------+-------------------+
| Object Pointer    | Weak Reference(s) |
+-------------------+-------------------+
| 0x1000            | [0x2000, 0x3000]  |
+-------------------+-------------------+Weak Table (after release):
+-------------------+-------------------+
| Object Pointer    | Weak Reference(s) |
+-------------------+-------------------+
| (nil)             | [nil, nil]        |  // personInstance 已被释放,weakPerson1 和 weakPerson2 被置为 nil
+-------------------+-------------------+

关键函数

在实现弱引用机制时,运行时系统使用以下关键函数:

libobjc 中的一系列 API

  1. objc_initWeak:初始化一个弱引用,将其添加到弱引用表中。
  2. objc_loadWeak:读取一个弱引用的值,确保在对象被释放后返回 nil
  3. objc_storeWeak:给弱引用赋值,并更新弱引用表。
  4. objc_destroyWeak:销毁一个弱引用,并从弱引用表中移除对应的条目。

概述

弱引用表的键是被引用对象的内存地址,而值是一个集合,包含了所有指向该对象的弱引用指针的地址。当对象被释放时,运行时会在弱引用表中找到所有指向该对象的弱引用,并将它们置为 nil,然后删除对应的条目。通过这种机制,iOS 保证了 weak 引用的安全性和可靠性。

http://www.sczhlp.com/news/96765/

相关文章:

  • 网站虚拟主持人制作ppt模板哪里找
  • 辽宁建设厅投诉网站有专门教做家具的网站
  • 低价网站建设为您公司省去了什么长春网站排名优化报价
  • 做网站大概费用百度做网站的服务合同
  • 深圳网站优化最好的方法网站建设费用报价单
  • 电子商务型网站建设官方网站制作
  • 上海易站网站建设沧州网站建没
  • 哪些公司可以做网站wordpress4.0友情链接
  • 网站开发怎么连接sqlserver电子商务网站建设与管理课程心得
  • 淘客网站建设教程长沙网站建设长沙建设银行
  • 黑龙江网站建设开发网站建设验收期
  • 北仑网站推广遵义县住房和城乡建设局网站
  • 北京微信网站搭建费用wordpress添加友情链接页面
  • LayerMask的使用规范
  • 存在,是终极的神奇。ECT-OS-JiuHuaShan 框架正是这份神奇的自我觉醒、自我阐述与自我捍卫
  • 深入解析:【Unity基础】枚举AudioType各个枚举项对应的音频文件类型
  • 摄影网站设计说明搜索引擎优化的具体措施
  • 域名备案后网站打不开哪个网站做美食视频软件
  • 国内专业网站建设如何做免费网站
  • 小伙做网站网站维护工程师工资
  • 广州网站建设 易点wordpress加速服务
  • 十三、异常和中断的基本概念
  • 【关注可白嫖源码】25046基于SpringBoot的少儿编程管理系统设计与达成
  • 国内知名设计网站ps6做网站点哪里保存
  • 网站改版注意事项wordpress 是什么开源协议
  • 珠海自适应网站wordpress动作钩子
  • 烟台中企动力提供网站建设不用付费不用登录的网站
  • wordpress建站不知道密码本地建站软件
  • 一级a做爰片免费网站短视频播放广东十大排名建筑公司
  • 建手机网站的软件有哪些上海市建设安全协会官方网站