码迷,mamicode.com
首页 > 其他好文 > 详细

内存管理

时间:2014-07-09 14:22:54      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:使用   管理   new   table   ar   re   

内存管理的管理范围

任何继承了NSObject的对象

对其他非对象类型无效(int、char、float、double、struct、enum等 )

 

只有OC对象才需要进行内存管理的本质原因:

OC对象存放于堆里面

非OC对象一般放在栈里面(栈内存会被系统自动回收)

系统是如何判断 什么时候需要回收一个对象所占用的内存?

根据对象的引用计数器

简单来说, 可以理解为: 引用计数器表示有多少人正在使用这个对象

当没有任何人使用这个对象时, 系统才会回收这个对象, 也就是说 当对象的引用计数器为0时,  对象占用的内存就会被系统回收

如果对象的计数器不为0,那么在整个程序运行过程,它占用的内存就不可能被回收(除非整个程序已经退出 )

所以我们以后就是通过操作引用计数器来管理内存

任何一个对象, 刚生下来的时候, 引用计数器都为1 当使用alloc、new或者copy创建一个对象时,对象的引用计数器默认就是1

retain +1,release-1,retainCount计数器值

dealloc: 当一个对象的引用计数器值为0时, 这个对象即将被销毁, 其占用的内存被系统回收 系统会自动给对象发送一条dealloc消息。 一般会对dealloc进行重写,但是重写一定要继承dealloc

多对象内存管理: 总的来说, 有这么几点管理规律

只要还有人在用某个对象,那么这个对象就不会被回收

只要你想用这个对象,就让对象的计数器+1

当你不再使用这个对象时,就让对象的计数器-1

内存管理原则 苹果官方规定的内存管理原则 谁创建谁release : 如果你通过alloc、new或[mutable]copy来创建一个对象,那么你必须调用release或autorelease

谁retain谁release :只要你调用了retain,就必须调用一次release

总结一下就是 有加就有减 曾经让对象的计数器+1,就必须在最后让对象计数器-1

内存管理,布布扣,bubuko.com

内存管理

标签:使用   管理   new   table   ar   re   

原文地址:http://www.cnblogs.com/morrs-adu443/p/a_du_0708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!