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操作,但不完善

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

被折叠的 条评论
为什么被折叠?



