前言:
iOS的内存管理机制ARC和MRC是程序员参加面试基本必问的问题,也是考察一个iOS基本功是
否扎实的关键,这样深入理解内存管理机制的重要性就不言而喻了。
iOS内存管理机制发展史
iOS 5以前 :MRC(手动引用计数)
iOS 5及以后:ARC (自动引入计数)
MRC机制时代
“谁开辟申请,谁及时合理释放” 面对自己申请的内存空间是要及时进行回收的:
不及时释放会造成什么结果?
对象存储在栈上,可能会大量的占用内存,内存不足造成程序闪退(也就是所说的内存泄露)
不合理释放会造成什么后果?
提前释放掉,倘若后面继续对该对象进行引用操作,会出现崩溃,出现EXC_BAD_ACCESS
操作已经释放掉的对象的崩溃提示。(也就是所说的野指针)
MRC机制时代对于iOS程序员来说是有些痛苦的,那么我们深入的解析一下
内存管理原则 —-配对原则
解释:使引用计数(retainCount)+1的时候必须相对应的出现使引用计数-1
怎样使引用计数+1 ?
new
copy(mutablecopy)
retain
alloc
怎样使引用计数-1?
release
autorelease
例如:
[对象 release]; reatinCount-1
[对象 retain]; reatinCount+1,并且返回self
判断一个对象是否能被系统回收?
正藏情况下能被系统回收的对象唯一依据是该对象的引用计数(retainCount)为0