技术开发 频道

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
相关文章