iOS面试题(十九)内存管理--ARC&MRC&引用计数管理

本文深入解析内存管理核心概念,对比MRC与ARC机制,探讨引用计数管理原理,揭示ARC内部实现细节,以及Runtime协作机制。通过具体方法如alloc、retain、release、retainCount和dealloc的内部实现,阐述内存管理的复杂性和优化策略。

 

5.内存管理

  • 内存布局
  • 内存管理方案(更好的简述内存管理方案相关的问题,就要明白他们的数据结构)
  • 数据结构
  • ARC&MRC(什么是ARC,什么是MRC,他们的区别以及各自实现的机制、原理)
  • 引用计数机制(什么是引用计数机制?内存是怎样管理的?)
  • 弱引用表(我们声明weak的一个变量,为什么在内存释放的时候,weak指针会自动置为nil?弱引用变量内存是怎么管理的?)
  • 自动释放池(AutoReleasePool)的实现机制和原理是怎样的?
  • 循环引用

ARC&MRC


内存管理涉及到以下几个方法
alloc : 分配对象的内存空间。
retain : 使一个对象的引用计数加1
release : 使对象的引用计数减1
retainCount : 获取当前对象的引用计数值
autorelease : 当前对象会在autoreleasePool结束的时候,调用这个对象的release操作,进行引用计数减1
dealloc : 在MRC中若调用dealloc,需要显示的调用[super dealloc],来释放父类的相关成员变量

MRC
什么是MRC:通过手动引用计数来进行对象的内存管理。
MRC中方法retain / release / retainCount / autoreleaset / dealloc, 除了dealloc外,其他的都是MRC特有的,在ARC中若调用这些方法,会引起编译报错

ARC
什么是ARC:通过自动引用计数来管理内存。


之前我认为编译器为我们在对应的位置自动插入相应的retain和release操作,但不完善

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值