一、题目分析

使用 runtime associate 方法关联的对象,需要在主对象 dealloc 的时候释放吗?

  • 无论在 MRC 下还是 ARC 下均不需要,被关联的对象在生命周期内要比对象本身释放的晚很多,它们会在被 NSObject - dealloc 调用的 object_dispose() 方法中释放。
  • 调用 release :引用计数变为零,对象正在被销毁,生命周期即将结束,不能再有新的 __weak 弱引用,否则将指向 nil,调用 [self dealloc]。
  • 父类调用 dealloc:继承关系中最直接继承的父类再调用 -dealloc,如果是 MRC 代码则会手动释放实例变量们(iVars),继承关系中每一层的父类都再调用 dealloc。
  • NSObject 调用 dealloc:只做一件事:调用 Objective-C runtime 中object_dispose() 方法。
  • 调用 object_dispose():
    • 为 C++ 的实例变量们(iVars)调用 destructors;
    • 为 ARC 状态下的实例变量们(iVars) 调用 release;
    • 解除所有使用 runtimeAssociate方法关联的对象;
    • 解除所有 __weak 引用 调用 free()。
  • 当对象进行释放时,会调用 dealloc:
    • C++函数释放 :objc_cxxDestruct;

iOS经典面试题之使用runtime associate方法关联的对象释放及dealloc底层原理相关推荐

  1. 李洪强iOS经典面试题156 - Runtime详解(面试必备)

    李洪强iOS经典面试题156 - Runtime详解(面试必备)   一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C ...

  2. 李洪强iOS经典面试题153- 补充

    李洪强iOS经典面试题153- 补充   补充 有空就来解决几个问题,已经懒癌晚期没救了... UML 统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模 ...

  3. 李洪强iOS经典面试题36-简单介绍 ARC 以及 ARC 实现的原理

    李洪强iOS经典面试题36-简单介绍 ARC 以及 ARC 实现的原理 问题 简单介绍 ARC 以及 ARC 实现的原理. 考查点 ARC 是苹果在 WWDC 2011 提出来的技术,因此很多新入行的 ...

  4. 李洪强iOS经典面试题37-解释垃圾回收的原理

    李洪强iOS经典面试题37-解释垃圾回收的原理 问题 我们知道,Android 手机通常使用 Java 来开发,而 Java 是使用垃圾回收这种内存管理方式. 那么,ARC 和垃圾回收对比,有什么优点 ...

  5. 李洪强iOS经典面试题144-数据存储

    李洪强iOS经典面试题144-数据存储   数据存储 sqlite中插入特殊字符的方法和接收到处理方法. 除'其他的都是在特殊字符前面加"/",而 ' -> '' .方法:k ...

  6. iOS经典面试题之“runtime是如何实现weak变量的自动置nil”

    一.weak 属性特点 weak 表明该属性定义了一种"非拥有关系" (nonowning relationship): 为 weak 属性设置新值时,设置方法既不保留新值,也不释 ...

  7. iOS经典面试题总结--内存管理

    内存管理 1.什么是ARC? ARC是automatic reference counting自动引用计数,在程序编译时自动加入retain/release.在对象被创建时retain count+1 ...

  8. iOS经典面试题大全

    1.INTERVIEW 共勉 作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:638302184,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题.面试经验,讨 ...

  9. 整理一篇iOS经典面试题大全

    ###1.INTERVIEW 共勉 ###2.iOS developers 方向 ###3.INTERVIEW QUESTION 1.深copy和浅copy 浅拷贝: 1.对内存地址的复制,让目标对象 ...

最新文章

  1. 关于redis性能估算的小方法
  2. MySQL之concat、concat_ws以及group_concat的使用
  3. JavaWeb监听器
  4. Selenium2(WebDriver)开发环境搭建(java版)
  5. Django08:模型层(ORM)--测试脚本/必知的13条/神器的双下划线查询/多表操作
  6. 兼容FF/IE的添加收藏夹的代码
  7. idea 中新建Servlet
  8. 云南计算机专升本数据结构_云南计算机专升本分数大全(公布分数线431分)
  9. oracle --union和union all
  10. 全网最详细黑苹果安装教程,轻松打造Win10+黑苹果双系统,一看就懂。
  11. 尼得科与日本电产三协共同研发出一款搭载有“Zignear®”的AC伺服电机
  12. PHP 将百度地图上的一条线的点位进行平滑处理,画出一条曲线
  13. NeoKylin-Server使用docker部署跨主机redis集群
  14. asterisk cdr mysql_在asterisk中添加CDR sqlite支持
  15. HTML5 新特性: Web Worker 的创建与使用(webpack + TS 环境)
  16. HDLC(High-Level Data Link Control)(对比以太网)
  17. 九龙证券|AI重塑半导体基础设施,人工智能发展持续加速
  18. 制作深度linux优盘,制作Linux的优盘(usb)启动盘
  19. 桌面壁纸被计算机管理员禁用,电脑壁纸被管理员设置禁用了,怎么处理啊?
  20. Oo0代码混淆实现方法

热门文章

  1. SQL Server报错:选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中...
  2. 37. Sudoku Solver **
  3. 框架前期准备篇之AutoFac常见用法总结 转载
  4. iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享...
  5. axis2 调用webservice
  6. 二叉树的定义、性质、存储
  7. 浅谈数据结构-平衡二叉树
  8. poj 2515 差分序列,排列组合
  9. char二维数组_C语言指针与数组详解
  10. nodejs express使用node-xlsx实现文件的上传下载导入导出