iOS内存管理
概述
什么是内存管理
应用程序内存管理是在程序运行时分配内存(比如创建一个对象,会增加内存占用)与清除内存(比如销毁一个对象,会减少内存占用)的过程
为什么要管理内存
目前iPhone手机内存大多为1G,分配给每个应用程序的内存空间极其有限,当应用程序运行过程中所占用的内存较大时,便会收到系统给出的内存警告,如果应用程序所占用的内存超过限制时,便会被系统强制关闭,所以我们需要对应用程序进行内存管理,一个好的程序程序也应该尽可能少地占用内存
内存管理的方式
在OC中提供了两种管理内存的方式
- MRR(Manual Retain-Release),也被人称作MRC(Manual Reference Counting,手动引用计数)
- ARC(Automatic Reference Counting,自动引用计数)
注: 在Build Setting中的Objective-C Automatic Reference Counting设置为YES即为ARC
内存管理的范围
任何继承自NSObject的对象都需要管理内存(因存放在堆里面),基本数据类型int、float、double、char、结构体struct以及枚举enum都不需要管理内存(因存放在栈里面)
- 堆: 一般由程序员分配释放内存,若程序员不释放,程序结束时可能由OS释放,其操作方式类似于数据结构中的链表
- 栈: 由操作系统自动分配释放,存放函数的参数值,局部变量值等,其操作方式类似于数据结构中的栈(先进后出)