94,autorelease的介绍
2015-12-17 11:34
253 查看
#import <Foundation/Foundation.h>
@interface Person :
NSObject
-(void)run;
@end
@implementation Person
-(void)run{
NSLog(@"Run");
}
-(void)dealloc{
NSLog(@"%s",__func__);
[super dealloc];
}
@end
/*
1,autorelease的基本概念
autorelease是一种支持引用计数的内存管理方式,只要给队形发送一条autorelease消息会将对象放到一个自动释放池中,当自动释放池被销毁时,会对释放池中的对象进行一次release
注意:这里只是发送release消息,若当前的引用计数还为0,那么,该对象依然不会被释放
*/
int main(int argc,
const char * argv[]) {
//1,XCode5之后的,创建一个自动释放池
@autoreleasepool {
//创建对象,再释放对象
Person *person = [[Person
alloc]init];
person = [person autorelease];//只要调用autorelease,就不用调用release了,返回对象本身
[person run];
//创建对象并释放对象
Person *person1 = [[[Person
alloc]init]autorelease];
}
//2,XCode5之前的,创建一个自动释放池
NSAutoreleasePool *pool = [[NSAutoreleasePool
alloc]init];
//在这里写代码,
[pool release];
//>在IOS程序运行过程中,会创建无数个释放池,这些释放池由栈形式存在(先进后出)
//>当一个对象调用了autorelease方法时,会将这个对象放在栈顶的释放池中。
return 0;
}
//2015-12-17 10:11:04.217 1,autorelease[691:79551] Run
//2015-12-17 10:11:04.218 1,autorelease[691:79551] -[Person dealloc]
//Program ended with exit code: 0
@interface Person :
NSObject
-(void)run;
@end
@implementation Person
-(void)run{
NSLog(@"Run");
}
-(void)dealloc{
NSLog(@"%s",__func__);
[super dealloc];
}
@end
/*
1,autorelease的基本概念
autorelease是一种支持引用计数的内存管理方式,只要给队形发送一条autorelease消息会将对象放到一个自动释放池中,当自动释放池被销毁时,会对释放池中的对象进行一次release
注意:这里只是发送release消息,若当前的引用计数还为0,那么,该对象依然不会被释放
*/
int main(int argc,
const char * argv[]) {
//1,XCode5之后的,创建一个自动释放池
@autoreleasepool {
//创建对象,再释放对象
Person *person = [[Person
alloc]init];
person = [person autorelease];//只要调用autorelease,就不用调用release了,返回对象本身
[person run];
//创建对象并释放对象
Person *person1 = [[[Person
alloc]init]autorelease];
}
//2,XCode5之前的,创建一个自动释放池
NSAutoreleasePool *pool = [[NSAutoreleasePool
alloc]init];
//在这里写代码,
[pool release];
//>在IOS程序运行过程中,会创建无数个释放池,这些释放池由栈形式存在(先进后出)
//>当一个对象调用了autorelease方法时,会将这个对象放在栈顶的释放池中。
return 0;
}
//2015-12-17 10:11:04.217 1,autorelease[691:79551] Run
//2015-12-17 10:11:04.218 1,autorelease[691:79551] -[Person dealloc]
//Program ended with exit code: 0
相关文章推荐
- OC 学习 习题 更多
- 关于属性动画的 (日记)
- 网络原理,以及对VMware Workstation虚拟网络VMnet0、VMnet1、VMnet8的图解
- Redis的常用命令及高级应用
- 解决Tomcat catalina.out 不断成长导致档案过大的问题
- 【mysql】 mysql 子查询、联合查询、模糊查询、排序、聚合函数、分组----------语法
- mysql中and和or
- 如何获取和修改URL
- 性能调优之Java系统级性能监控及优化
- android的样式(style)与主题(theme)
- oracle executing oracle import utility,please wait终极解决方案
- 双十二最大赢家 乐视手机成发展最快国产品牌
- 性能调优之MYSQL高并发优化
- powercmd有内存泄漏
- Maven构建SSM架构,并分离层次,使用Maven 组织多项目
- 嵌入式文件系统——Cramfs、JFFS2和YAFFS2概述
- Undefined exploded archive location myeclipse无法发布web工程
- 不能出现第三个中间变量,字符串的交换.
- 双十二最大赢家 乐视手机成发展最快国产品牌
- MYSQL性能优化