美文网首页基础
12.ARC 在运行时做了哪些工作?

12.ARC 在运行时做了哪些工作?

作者: lucdwy | 来源:发表于2019-01-17 10:29 被阅读120次
  • 主要是指 weak 关键字。weak 修饰的变量能够在引用计数为0 时被自动设置成 nil,显然是有运行时逻辑在工作的。

  • 为了保证向后兼容性,ARC 在运行时检测到类函数中的 autorelease 后紧跟其后 retain,此时不直接调用对象的 autorelease 方法,而是改为调用 objc_autoreleaseReturnValue。 objc_autoreleaseReturnValue 会检视当前方法返回之后即将要执行的那段代码,若那段代码要在返回对象上执行 retain 操作,则设置全局数据结构中的一个标志位,而不执行 autorelease 操作,与之相似,如果方法返回了一个自动释放的对象,而调用方法的代码要保留此对象,那么此时不直接执行 retain ,而是改为执行 objc_retainAoutoreleasedReturnValue函数。此函数要检测刚才提到的标志位,若已经置位,则不执行 retain 操作,设置并检测标志位,要比调用 autorelease 和retain 更快。

转自:https://github.com/liberalisman/iOS-InterviewQuestion-collection/blob/master/%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/12.%E7%AC%AC%E5%8D%81%E4%BA%8C%E9%A2%98.md

相关文章

  • 12.ARC 在运行时做了哪些工作?

    主要是指 weak 关键字。weak 修饰的变量能够在引用计数为0 时被自动设置成 nil,显然是有运行时逻辑在工...

  • iOS 内存管理面试题( `ARC` 在运行时做了哪些工作?)

    ARC 在运行时做了哪些工作? 主要是指 weak 关键字。weak 修饰的变量能够在引用计数为0 时被自动设置成...

  • 编程之反射机制

    什么是反射机制 反射机制指的是程序在运行时能够获取自身的信息。例如一个对象能够在运行时知道自己有哪些方法和属性。 ...

  • 动态语言

    就是在运行时来执行静态语言的编译链接工作!runtime

  • 34 | iOS 黑魔法 Runtime Method Swiz

    直接使用 Runtime 方法交换开发的风险有哪些? Objective-C 是门动态语言,可以在运行时做任何它能...

  • javaSE - 011 - 反射

    反射(Reflection) 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个...

  • Java反射和代理

    Java反射概念 反射有如下的功能: 在运行时判断任意一个对象所属的类; 在运行时构造任意一个类的对象; 在运行时...

  • Java反射学习小记

    Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断...

  • Java反射

    一、反射: 1.概念: 2.作用: 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任...

  • Java反射机制

    Java反射机制指的是: 在运行时判断任意一个对象所属的类; 在运行时构造任意一个类的对象; 在运行时判段任意一个...

网友评论

    本文标题:12.ARC 在运行时做了哪些工作?

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