内存管理(app占用内存过大,系统可能会强制关闭app, 造成闪退现象, 影响用户体验)
0>下列行为都会增加一个app的内存占用
#创建一个OC对象
#定义一个变量
#调用一个函数或者方法
1>对内存管理涉及的操作
@分配内存 : 比如创建一个对象, 会增加内存占用
@清除内存 : 比如销毁一个对象, 能减小内存占用
2>管理范围
@任何继承了NSObject的对象 (所有的OC对象,对象类型)
@对其他非对象类型(基本数据类型)无效(int、char、float、double、struct、enum等 )
3>只有OC对象才需要进行内存管理的本质
OC对象存放于堆里面
非OC对象一般放在栈里面(栈内存会被系统自动回收)
注意:堆、栈的区别
@基本数据类型:大小固定,对象数据类型:大小不固定
@代码执行完毕后,“堆内存”不会自动销毁,而“栈”内存会自动弹栈(释放)
4>内存管理原则
@谁创建谁release : 如果你通过alloc、new或copy、mutableCopy来创建一个对象,那么你必须调用release或autorelease
@谁retain谁release :只要你调用了retain,就必须调用一次release
总结:
有加就有减 ,曾经让对象的计数器+1,就必须在最后让对象计数器-1,在自己负责的区域内(某个方法范围内、某个对象内等。):有+,就得有-
原文:http://www.cnblogs.com/dafenqi-boby/p/4959314.html