iPhone 中的内存管理
2010-03-17 20:57:00 来源:WEB开发网3.5 内存管理
在iPhone开发中,对内存进行正确的管理是非常重要的一个方面。iPhone有128MRAM,但其中约有一半的容量要用于屏幕缓冲和其他系统进程,同时iPhone不支持将内存写到交换文件,所以iPhone只有大约64M的内存用来运行应用程序,且严格受到物理内存量的限制。这样,基本上不容许我们开发的软件存在任何的内存泄露。
iPhone中的内存管理
由于iPhone对内存严格的要求,所以当一个对象不再需要时,要及时释放它所占用的内存空间。
Objective-C 的内存管理采用了基于引用计数(Reference Count)这种非常常用的技术。简单讲,每个对象都有一个与之关联的整数,可以将它称为引用计数器或保留计数器,如果要使用一个对象,并确保在使用期间对象不被释放,需要通过函数调用来取得“所有权”,即引用计数器加1,使用结束后再调用函数释放“所有权”,使引用计数器减1。“所有权”的获得和释放,对应引用计数的增加和减少。引用计数为正数时代表对象还有引用,为0时代表可以释放。
回想前面的例子,[NoteClass alloc]就是为对象分配内存并使它的引用计数器的值为1,而[note1 release]则是负责将note1对象的引用计数值减1,如果检测到note1的引用计数值为0,则note1对象会被释放掉,同时调用 dealloc方法。但在这里要牢记的是,在Objective-C中,必须严格使用引用计数机制来控制内存的分配与释放,当对象的引用计数为0时,对象会自动进行释放,并调用dealloc方法,我们绝不可以自行调用dealloc方法。
下面就来详细说明一下内存是如何管理的。
用于内存管理的方法
在开发过程中,主要使用以下方法来对内存进行管理。
获得对象当前引用计数的方法
(1) -(NSUInteger)retainCount:方法返回当前对象的引用计数值。
获得对象所有权的方法:
(1) +(id)alloc:这是一个类方法,相信现在你已对它非常熟悉了,它负责为新建的对象分配内存并将新对象返回,同时将该对象的引用计数值设置为1。如果使用了该方法,则被创建的对象要负责调用release方法或autorelease方法来释放对象所有权,从而避免内存泄露。
(2) ? (id)copy:拷贝引用该方法的对象,返回新复制的对象,被赋值的对象引用计数值加1。像obj1 = [obj2 copy],该语句表示复制对象obj2,并将复制结果赋给obj1,同时将obj1的引用计数值加1。
- ››iphone图片拉伸的几种方法
- ››iphone正则表达式的简单使用
- ››iPhone开发Unresolved Symbols CAKeyframeAnimati...
- ››IPhone开发-“此证书是由未知颁发机构签名”解决方...
- ››IPhone开发-整合私钥和证书,生成.p12文件
- ››iPhone应用开发-UIPickerView选取器详解
- ››iphone 获取屏幕的宽度和高度
- ››iPhone读取工程包中的二进制文件
- ››iPhone新手机 不挂YouTube APP
- ››iPhone 获取指定格式的时间和日期
- ››iPhone版PPS走进生活 观赏体验媲美PC版
- ››管理/var/spool/clientmqueue/下的大文件
赞助商链接