MRC、ARC内存管理机制?(为什么要进行内存管理, 内存管理的范围和对象, 内存管理的原理)
** (为什么)
因为移动设备的内存极其有限,当一个程序达到40M时, 系统会发出内存警告. 当程序达到120M时, 程序会闪退, 影响用户体验. 为了保证程序的运行流畅, 必须进行内存管理
**(管理的范围及对象)
管理所有继承自NSObject的对象, 对基本数据类型无效. 是因为对象和其他数据类型在系统中存储的空间不一样, 其他局部变量主要存储在栈区(因为基本数据类型占用的存储空间是固定的, 一般存放于栈区 ), 而对象存储于堆中, 当代码块结束时, 这个代码块所涉及到的所有局部变量会自动清空,指向对象的指针也会被回收, 这时对象就没有指针指向, 但依然存在于堆内存中, 造成内存泄露.
**(内存管理的原理)
MRC下,oc内存管理遵循“谁创建、谁释放、谁引用、谁管理”的机制,当创建或引用一个对象时,需要向她发送alloc,copy,retain消息,当释放该对象时需要发送release消息,当引用计数为零的时候,系统释放该对象。
ARC是自动引用计数,管理机制与手动机制一样,只是不再需要调用retain,release,autorelease,它会在适当的位置插入release和autorelease。使用ARC不代表不需要内存管理了,例如使用block时要避免循环引用,代理作为属性时,要用弱指针指引。