【黑马程序员】autorelease用法
2015-08-23 13:10
260 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
autorelease自动释放池
autorelease 的用法
autorelease 快速创建对象的方法
1)在iOS程序运行过程中,会创建无数个池子,这些池子都是以栈结构(先进后出)存在的。
2) 当一个对象调用autorelease时,会将这个对象放到位于栈顶的释放池中
2.autorelease的创建方式
1)iOS 5.0以前的创建方式
2)iOS 5.0 以后
2.自动释放池的嵌套使用
3.自动释放池不宜放占用内存比较大的对象
1)尽量避免对大内存使用该方法,对于这种延迟释放机制,会造成短时间内内存的上涨。
2)不要把大量循环操作放到同一个@autorelease之间,这样会造成内存峰值的上升
Person.m文件
版权声明:本文为博主原创文章,未经博主允许不得转载。
autorelease自动释放池
autorelease 的用法
autorelease 快速创建对象的方法
autorelease(自动释放池)
1.autorelease介绍1)在iOS程序运行过程中,会创建无数个池子,这些池子都是以栈结构(先进后出)存在的。
2) 当一个对象调用autorelease时,会将这个对象放到位于栈顶的释放池中
2.autorelease的创建方式
1)iOS 5.0以前的创建方式
2)iOS 5.0 以后
//iOS 5.0以前的创建方式 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; //中间是在autoreleasepool中的代码 [pool release];//[pool drain];用于mac
//5.0之后 @autoreleasepool{ //在这里创建的对象,都会自动调用autorelease } //在autorelease 结束时,会自动向代码块中的每一个对象发送release消息
autorelease 的用法
1.创建的对象,要在autoreleasepool中调用autorelease方法#import <Foundation/Foundation.h> #import "Person.h" //假设已有一个Person类 int main(int argc, const char * argv[]){ @autoreleasepool{ Person p = [Person new]; [p autorelease];//这样p就被加入了当前的autoreleasepool中 //不过一般不这样用了,因为在创建一个对象时,会自动调用autoreleae方法。 } return 0; }
2.自动释放池的嵌套使用
Person *p = [Person new]; [p retain]; @autoreleasepool{ @autoreleasepoo{ [p autorelease]; //先执行最内部的autorelesepool,在该autorelease结束时,给p发送release消息,p的retainCount变为1 } [p autorelease]; //再将p加入到外部autoreleasepool中,该池结束时,给p发送release消息,p的retainCount变为0,对象p被销毁 }
3.自动释放池不宜放占用内存比较大的对象
1)尽量避免对大内存使用该方法,对于这种延迟释放机制,会造成短时间内内存的上涨。
2)不要把大量循环操作放到同一个@autorelease之间,这样会造成内存峰值的上升
autorelease 快速创建对象的方法
Person.h文件#import <Foundation/Foundation.h> @interface Person : NSObject +(instancetype)person; @end
Person.m文件
#import "Person.h" @implementation Person +(instancetype)person{ return [[[Person alloc] init] autorelease]; //返回的是对象的空间,这样就可以帮我们自动的把对象加入到自动释放池 } @end
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- 黑马程序员-------Java笔记--------怎么越过泛型检查
- 【剑指offer】面试题39:深度二叉树
- 黑马程序员----集合框架的的基本操作
- iOS单例模式(面试必考)
- 黑马程序员-------Java笔记--------分数基本运算
- 黑马程序员----Java集合框架学习笔记2 Map-工具类-泛型
- 珍藏文:花10钟看一看少走30年弯路
- 黑马程序员——JAVA基础之面向对象(下)
- 程序员一生必读的书
- 幽默趣味:程序员如同妓女
- 黑马程序员-------Java笔记--------完数与质数
- 剑指Offer面试题:8.斐波那契数列
- 黑马程序员----Java集合框架学习笔记1-List 与Set
- 初入职场感悟
- 黑马程序员--OC之内存管理
- 黑马程序员-[OC]学习之旅-ARC机制和类别
- 我的职业规划(android)
- Android(java)学习笔记188:关于构造代码块,构造函数的一道面试题(华为面试题)
- 一个合格的程序员应该读过哪些书
- 黑马程序员-----Java基础-----IO流-1