美文网首页iOS面试题
iOS面试题:什么是arc?(arc是为了解决什么问题诞生的?)

iOS面试题:什么是arc?(arc是为了解决什么问题诞生的?)

作者: iOS心安 | 来源:发表于2020-12-15 20:15 被阅读0次

先解释ARC: automatic reference counting自动引用计数。

ARC几个要点:

在对象被创建时 retain count +1,在对象被releaseretain count -1.当retain count 为0 时,销毁对象。
程序中加入autoreleasepool的对象会由系统自动加上autorelease方法,如果该对象引用计数为0,则销毁。
那么ARC是为了解决什么问题诞生的呢?这个得追溯到MRC手动内存管理时代说起。

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:711315161,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

MRC下内存管理的缺点:

1.当我们要释放一个堆内存时,首先要确定指向这个堆空间的指针都被release了。(避免提前释放)

2.多线程操作时,不确定哪个线程最后使用完毕

3.释放指针指向的堆空间,首先要确定哪些指针指向同一个堆,这些指针只能释放一次。(MRC下即谁创建,谁释放,避免重复释放)

4.模块化操作时,对象可能被多个模块创建和使用,不能确定最后由谁去释放。

使用ARC,开发者不再需要手动的retain/release/autorelease. 编译器会自动插入对应的代码,再结合Objective C的runtime,实现自动引用计数。

在Objective C中,有三种类型是ARC适用的:

  • block
  • objective 对象,id, Class, NSError*等
  • 由attribute((NSObject))标记的类型。

double *,CFStringRef等不是ARC适用的,仍然需要手动管理内存。

本文参考文章:starfox寒流

相关文章

  • 2017 iOS面试题 总结二

    1. 什么是arc?(arc是为了解决什么问题诞生的?) 答:ARC 是 Automatic Reference ...

  • iOS题目

    1.什么是arc?(arc是为了解决什么问题诞生的?) 首先解释ARC: automatic reference ...

  • 知乎上iOS面试题目

    1.什么是arc?(arc是为了解决什么问题诞生的?) 首先解释ARC: automatic reference ...

  • iOS面试题及答案

    1.什么是arc?(arc是为了解决什么问题诞生的?) 首先解释ARC: automatic reference ...

  • iOS

    1.什么是arc?(arc是为了解决什么问题诞生的?) 首先解释ARC: automatic reference ...

  • Peak面试题

    1.什么是arc?(arc是为了解决什么问题诞生的?) 首先解释ARC: automatic reference ...

  • 关于一些 iOS 面试问题的解答

    1. 什么是 ARC? (ARC 是为了解决什么问题而诞生的?) ARC 是 Automatic Referenc...

  • iOS高级面试题-网易

    1、什么是arc?(arc是为了解决什么问题诞生的?)首先解释ARC: automatic reference c...

  • iOS面试题-网易OA系统岗位

    1、什么是arc?(arc是为了解决什么问题诞生的?)首先解释ARC: automatic reference c...

  • iOS 常见的基础知识,相信很多人回答不上

    一、什么是arc?(arc是为了解决什么问题诞生的?) Automatic Reference Counting,...

网友评论

    本文标题:iOS面试题:什么是arc?(arc是为了解决什么问题诞生的?)

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