美文网首页iOS面试
iOS 内存管理面试题( `ARC` 在运行时做了哪些工作?)

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

作者: 程序员_秃头怪 | 来源:发表于2019-08-08 20:09 被阅读7次

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

  • 主要是指 weak 关键字。weak 修饰的变量能够在引用计数为0 时被自动设置成 nil,显然是有运行时逻辑在工作的。
  • 为了保证向后兼容性,ARC 在运行时检测到类函数中的 autorelease 后紧跟其后 retain,此时不直接调用对象的 autorelease 方法,而是改为调用 objc_autoreleaseReturnValue
    objc_autoreleaseReturnValue 会检视当前方法返回之后即将要执行的那段代码,若那段代码要在返回对象上执行 retain 操作,则设置全局数据结构中的一个标志位,而不执行 autorelease 操作,与之相似,如果方法返回了一个自动释放的对象,而调用方法的代码要保留此对象,那么此时不直接执行 retain ,而是改为执行 objc_retainAoutoreleasedReturnValue函数。此函数要检测刚才提到的标志位,若已经置位,则不执行 retain 操作,设置并检测标志位,要比调用 autoreleaseretain更快。

热文推荐

2019 全网 iOS 面试题以及答案总结!

相关文章

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

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

  • iOS ARC内存管理及强弱指针

    ARC是苹果为了简化程序员对内存的管理,推出的一套内存管理机制,使用ARC机制,对象的申请和释放工作会在运行时,由...

  • ARC中强指针与弱指针

    ARC是苹果为了简化程序员对内存的管理,推出的一套内存管理机制使用ARC机制,对象的申请和释放工作会在运行时,由编...

  • iOS夯实:ARC时代的内存管理

    iOS夯实:ARC时代的内存管理 iOS夯实:ARC时代的内存管理

  • IOS 内存管理

    转自iOS经典面试题总结--内存管理 - CocoaChina_让移动开发更简单 内存管理 1.什么是ARC? A...

  • OC中内存管理

    在OC中内存管理MRC手动内存管理和ARC自动内存管理,ARC是从iOS 4.0开始,在iOS 4.0之前...

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

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

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

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

  • weak和strong

    注:ARC是苹果为了简化程序员对内存的管理,推出的一套内存管理机制,对象的申请和释放工作会在运行时,由编译器自动添...

  • iOS 面试题

    1.ARC 相对于GC的优点和缺点 优点:1.ARC工作在编译期,在运行时没有额外开销。   2.ARC的内存回收...

网友评论

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

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