0c-34-自动释放池
2016-03-24 13:20
344 查看
#import <Foundation/Foundation.h> #import "Person.h" Person * creatPerson() { Person *p = [[Person alloc] init]; return p; } int main(int argc, const char * argv[]) { @autoreleasepool { //Person *P0 = creatPerson();//[[Person alloc] init]只能由p0释放,但是是p创建的违反了谁创建谁释放原则。 // autorelease:当对象调用这个方法时,就把对象放到了自动释放池中,延迟释放。 Person *P = [[[Person alloc] init] autorelease]; P.age = 10; [P retain]; // 2 // 不关注对象什么时候被释放. Person *p1 = [[[Person alloc]init] autorelease]; p1.age = 100; [p1 retain]; }// 出了花括号,会对池子里面的所有调用了autorelease方法的对象,做一次release操作. return 0; }
自动释放池的嵌套使用:
#import <Foundation/Foundation.h> // 以栈的结构进行存储的,先进后出 int main(int argc, const char * argv[]) { // 1号池子 @autoreleasepool { //2号池子 @autoreleasepool { //3号池子 @autoreleasepool { Person *p = [Person new]; } } } //3号池子先释放,1号池子最互释放。 return 0; }
相关文章推荐
- 人脸检测学习网址
- Hadoop Hive基础sql语法
- Go语言:通过组合获得接口
- OSVERSIONINFO的用法及实例
- 数据库锁表查询及解除方法
- Hadoop之hive的drop table恢复
- A Knight's Journey(DFS)
- Spring4 版 eventbus 事件通信 事件驱动 介绍
- [收藏]学习awk,看这篇就够了
- 基于UItableViewHeaderFooterView用故事板添加视图的方法
- nrf51822 串口透传广播数据抓包讲解
- hrbust 1041 哈理工oj 1041 Chocolate Auction【线段树+区间更新】
- db2数据库监控脚本
- pycnn以多项式为例的动态网络结构
- spark mllib 应用程序开发及提交到spark集群运行--入门
- 深入解读Quartz的原理
- 7个软件开发原则
- Gulp vs Grunt 前端工程构建工具
- 面向对象的java编程及面向对象的特征
- 通过wifi连接adb调试