OC @autorelease
来源:互联网 发布:2016季后赛数据 编辑:程序博客网 时间:2024/05/17 22:45
使用@autorelease关键字,生成自动释放池, 放在释放池中的对象, 我们不用再关键何时需要对其进行release操作
当池子被销毁时, 会对放在池子中的所有对象进行一次release操作. 池中对象是以栈的形式存放的, 先生成的对象后释放, 后生成 的对象行释放
//// Person.h// autorelease//// Created by LiuWei on 15/4/17.// Copyright (c) 2015年 LiuWei. All rights reserved.//#import <Foundation/Foundation.h>@interface Person : NSObject@property (nonatomic, assign)int age;+ (id)personWithAge:(int) age;@end
//// Person.m// autorelease//// Created by LiuWei on 15/4/17.// Copyright (c) 2015年 LiuWei. All rights reserved.//#import "Person.h"@implementation Person- (void)dealloc{ NSLog(@"age = %i Person --- dealloc", _age); [super dealloc];}// 快速创建autorelease对象+ (id)personWithAge:(int)age{ Person *p = [[[Person alloc]init]autorelease]; p.age = age; return p;}@end
//// main.m// autorelease//// Created by LiuWei on 15/4/17.// Copyright (c) 2015年 LiuWei. All rights reserved.//#import <Foundation/Foundation.h>#import "Person.h"/* autorelease 好处 : 不用再关心何时释放对象 注意 : 占用内存较大的对象不要随便使用autorelease 大内存对象一般用release, 进行精确控制 可以创建无数多个释放池, 这些池子都是以栈结构形式存在 当一个对象调用autorelease方法, 会将这个对象放到释放池的栈顶*/int main(int argc, const char * argv[]){ // 自动释放池创建方式1 // autorelease 返回对象本身 // 会将对象放到一个自动释放池中 // 当自动释放池被销毁时,会对池子里边的所有对象做一次release操作 // Person *p = [[[Person alloc]init]autorelease]; // p.age = 20; // 自动释放池创建方式2 // 在大括号之间创建的对象都会被放到自动释放池中 @autoreleasepool { // 释放池开始 Person *p = [[[Person alloc]init]autorelease]; p.age = 1; @autoreleasepool { // 释放池开始 Person *p2 = [[[Person alloc]init]autorelease]; p2.age = 2; Person *p3 = [[[Person alloc]init]autorelease]; p3.age = 3; } // 释放池结束 Person *p4 = [[[Person alloc]init]autorelease]; p4.age = 4; Person *p5 = [Person personWithAge:5]; } // 释放池结束, 销毁释放池,对池中所有对象进行一次release操作 return 0;}
0 0
- OC @autorelease
- 关于OC的autorelease
- 关于OC的autorelease
- 黑马程序员 -- OC语言 Autorelease
- OC学习笔记之autorelease
- OC基础—内存管理之autorelease
- IOS开发---OC语言-㉔autorelease
- OC-内存管理之autorelease和release
- 十二、oc中autorelease的基本使用
- 黑马程序员---OC autorelease
- OC学习笔记六 内存管理(autorelease)
- OC-retain,copy,assign及autorelease
- OC语言之autorelease基本使用
- autorelease
- autorelease
- autorelease
- autorelease
- @autorelease
- “斐波那契数列”的两种算法
- js原型小结
- [BZOJ1096]ZJOI2007仓库建设|斜率优化DP
- week7_黑板抽查题目,按从小到大排序
- mac上配置LUA
- OC @autorelease
- Win10-Win7下jdk1.8环境配置教程
- 杭电1173(采矿)
- Android优化——UI优化(一)
- [MFC] List Control第一列为什么无法居中?
- 1.HCNP-R&S-IERN——OSPF路由协议基础
- 开始对EEG数据进行训练
- First steps of using googleVis on shiny
- Windows 中 Boost 库安装简要