Autorelease自动释放池
来源:互联网 发布:深入java虚拟机电子书 编辑:程序博客网 时间:2024/06/05 16:59
Autorelease自动释放池
- (一)基本用法
(1)会将对象放到一个自动释放池中
(2)当自动释放池被销毁时,会对池子里的所有对象做一次release
(3)会返回对象本身
(4)调用完autorelease方法后,对象的计数器不受影响(销毁时影响)
- (二)好处
(1)不需要再关心对象释放的时间
(2)不需要再关心什么时候调用release
- (三)使用注意
(1)占用内存较大的对象,不要随便使用autorelease,应该使用release来精确控制
(2)占用内存较小的对象使用autorelease,没有太大的影响
- (四)错误写法
(1)连续调用多次autorelease,释放池销毁时执行两次release(-1吗?就只执行一次release)
(2)Alloc之后调用了autorelease,之后又调用了release。
- (五)自动释放池
(1)在ios程序运行过程中,会创建无数个池子,这些池子都是以栈结构(先进后出)存在的。
(2)当一个对象调用autorelease时,会将这个对象放到位于栈顶的释放池中(距离对象最近的释放池)
(3)自动释放池原理:一个双向链表
- (六)自动释放池的创建方式
(1)ios 5.0以前的创建方式
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
““““““““`
[pool release];//[pool drain];用于mac
(2)Ios5.0以后
@autoreleasepool
{//开始代表创建自动释放池
·······
}//结束代表销毁自动释放池
- (七)Autorelease注意
(1)系统自带的方法中,如果不包含alloc new copy等,则这些方法返回的对象都是autorelease的,如[NSDate date];
(2)开发中经常会写一些类方法来快速创建一个autorelease对象,创建对象时不要直接使用类名,而是使用self
- autorelease自动释放池
- Autorelease自动释放池
- 自动释放池(Autorelease Pools)
- iOS 自动释放池Autorelease
- Autorelease Pools自动释放池概要
- objective-C 自动释放池(autorelease pool)
- Objective-C Autorelease Pools(自动释放池)
- IOS 自动释放池Autorelease pool
- Autorelease自动释放池的使用
- OC学习笔记之autorelease与自动释放池
- autorelease pool的内存管理之-自动释放池
- OC-027.手动内存管理中的自动释放池@autorelease
- 内存管理以及Autorelease和自动释放池
- 回顾自动释放池的使用及个人理解autorelease
- 深入理解Objective-C: Autorelease Pool (自动释放池)
- objective-C 的内存管理之-自动释放池(autorelease pool)
- Object-C内存管理---资源自动释放池(The Autorelease Pool)
- objective-C 的内存管理之-自动释放池(autorelease pool)
- 【JavaScript】 判断空对象区别于null、undefined
- GitHub 优秀的 Android 开源项目
- 微信开发_接收消息,回复消息(3)
- C语言文件读写操作总结
- Canvas-drawImage 绘制图片模糊问题
- Autorelease自动释放池
- Android 热补丁动态修复框架小结
- JAVA内存模型
- eclipse属性配置(背景色字体等)文件的导入导出方法
- spark-shell出错_解决方法
- UIImagePickerController的简单应用
- 【JavaScript】对象结构的简化--删除Json中的空属性、空数组
- http://blog.csdn.net/cswhale/article/details/16941281
- 余数和商 一位数乘以一位数