Objective-C内存管理入门系列篇
iPhone系统中的Objective-C的内存管理机制是比较灵活的,即可以拿来像C/C++一样用,也可以加个AutoreleasePool让它升级为半自动化的内存管理语言。当然,也不能拿JAVA虚拟机中的全自动化GC来比~
八、引用计数是实例对象的内存回收唯一参考
引用计数(retainCount)是Objective-C管理对象引用的唯一依据。调用实例的release方法后,此属性减一,减到为零时对象的dealloc方法被自动调用,进行内存回收操作,也就是说我们永不该手动调用对象的dealloc方法。
它的内存管理API老简单老简单了,下面就是它主要操作接口:
1,alloc, allocWithZone,new(带初始化)
为对象分配内存,retainCount为“1”,并返回此实例
2,release
retainCount 减“1”,减到“0”时调用此对象的dealloc方法
3,retain
retainCount 加“1”
4,copy,mutableCopy
复制一个实例,retainCount数为“1”,返回此实例。所得到的对象是与其它上下文无关的,独立的对象(干净对象)。
5,autorelease
在当前上下文的AutoreleasePool栈顶的autoreleasePool实例添加此对象,由于它的引入使Objective-C(非GC管理环境)由全手动内存管理上升到半自动化。
0
第1页:一、Objective-C内存管理入门第2页:二、关于索引计数的问题第3页:三、Interface Builder的内存管理第4页:四、对autorelease的误解第5页:五、不同内存管理环境下自动释放第6页:六、误释放对象第7页:七、Property中retain和copy的区别第8页:八、实例对象的内存回收唯一参考第9页:九、Objective-C内存管理准则第10页:十、对象的拥有者第11页:十一、不能直接调用dealloc的原因第12页:十二、内存管理半自动化语言第13页:十三、AutoreleasePool是被嵌套的第14页:十四、AutoreleasePool还被用在哪里
相关文章