一.内存
1•移动设备的内存极其有限,每个app所能占用的内存是有限制的
•下列行为都会增加一个app的内存占用
Ø创建一个OC对象
Ø定义一个变量
Ø调用一个函数或者方法
2•当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间。比如回收一些不需要使用的对象、变量等
3•如果app占用内存过大
Ø系统可能会强制关闭app,造成闪退现象,影响用户体验
二.内存管理
1•如何回收那些不需要再使用的对象?
Ø那就得学会OC的内存管理
2.•所谓内存管理,就是对内存进行管理,涉及的操作有:
Ø分配内存 :比如创建一个对象,会增加内存占用
Ø清除内存 :比如销毁一个对象,能减小内存占用
3.•内存管理的管理范围
Ø任何继承了NSObject的对象
Ø对其他非对象类型无效(int、char、float、double、struct、enum等)
4.•只有OC对象才需要进行内存管理的本质原因
(1)OC对象存放于堆里面
(2)非OC对象一般放在栈里面(栈内存会被系统自动回收)
三.内存管理的原则
•苹果官方规定的内存管理原则
Ø谁创建谁release:如果你通过alloc、new或[mutable]copy来创建一个对象,那么你必须调用release或autorelease
Ø谁retain谁release:只要你调用了retain,就必须调用一次release
•总结一下就是
Ø有加就有减
Ø曾经让对象的计数器+1,就必须在最后让对象计数器-1
四.堆栈的区别
1>堆空间的内存是动态分配的,一般存放对象,并且需要手动释放内存
2>栈空间的内存由系统自动分配,一般存放局部变量等,不需要手动管理内存
网友评论