一.内存管理的方式.
1.进行内存管理的原因:
1>.由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等。
管理范围:任何继承NSObject的对象,对其他的基本数据类型无效。
2>.本质原因是因为对象和其他数据类型在系统中的存储空间不一样,其它局部变量主要存放于栈中,而对象存储于堆中,当代码块结束时这个代码块中涉及的所有局部变量会被回收,指向对象的指针也被回收,此时对象已经没有指针指向,但依然存在于内存中,造成内存泄露。
2. 内存常见问题体现在两个方面:内存溢出,野指针异常.
内存溢出:ios给每个应用程序提供了一定的内存,用于程序的运行.一旦超出内存上限,程序就会Crash.(iphone3GS内存30M左右,iphone 5S 内存80M左右.程序中占内存最大的就是图片和音频等资源文件)
野指针问题:对象内存空间已经被系统回收,仍然使用指针操作这块内存.野指针异常是程序Crash的主要原因.代码量越大的程序,越不容易找出野指针的位置.
3.内存管理的方式
垃圾回收(Garbage Collector垃圾收集器 简称gc):程序员只需要开辟内存空间,不需要用代码显示的释放,系统来判断哪些空间不再被使用,并回收这些内存空间,以便再次分配.整个过程不需要代码,系统自动回收.java开发中一直使用的就是垃圾回收技术.
MRC(人工引用计数 Manual Reference Count):内存的开辟和释放都由程序代码进行控制.相对垃圾回收来说,对内存的控制更加灵活,可以在需要释放的时候及时释放对程序员的要求较高,程序员要熟悉内存管理的机制.
ARC(自动引用计数 Auto Reference Count):ios5.0的编译器特征,它允许用户开辟空间,不用释放空间.它不是垃圾回收!它的本质还是MRC,只是编译器帮助程序员默认加了释放的代码.
二.引用计数机制,影响计数的各个方法.
三.dealloc方法
四.内存管理的原则.
五.掌握copy的实现