基本用法;
1,autorelease 方法会返回对象本身
2,调用完autorelease方法后,对象的计数器不变
2,autorelease 会将对象放到一个自动释放池中
3,当自动释放池被销毁时,会对池子里面的所有对象做一次release操作
 
autorelease的好处:
1》不用再关心对象释放的时间
2》不用再关心什么时候调用release
 
autorelease的使用注意:
1》占用内存较大的对象不要随便使用autorelease;
2>占用用内存较小的对象使用autorelease,没有太大的影响
 
错误写法:
1》alloc之后调用了autorelease,又调用了release
@autoreleasepool
{
    Person * p  = [ [ [Person alloc] init]  autorelease]
    [ p  release];
}
2》连续调用多次autorelease
@autoreleasepool
{
    Person * p  =[ [ [ [Person alloc] init]  autorelease] release]
}
自动释放池:
1》在IOS程序运行过程中,会创建无数个池子,这些池子都是以栈结构存在(先进后出)
2》当一个对象调用autorelease方法时,会将这个对象放到栈顶的释放池
 
自动释放池的创建方式:
1》IOS5.0之前:
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc]  init];
 
[pool release] ; // [pool drain];
2>IOS5.0开始
@autoreleasepool
   {
   }
 
 
1,系统自带的方法里没有包含alloc, new , copy,说明返回的对象都是autorelease,如NSString * s = @"adaf";
2,开发中经常回提供一些类方法,快速创建一个已经autorelease过的对象
1》创建对象时不要直接用类名,一般用self
+(id) person
{
    return  [ [ [self alloc]   init ]   autorelease];
}
int main ( ) {
@autoreleasepool//必须加池子
   {
    Person * p =[  [ [Person alloc]   init ]   autorelease];
    }
}
可以在创建类方法精简Person的初始话:
+(id) person
{
    return  [ [ [Person alloc]   init ]   autorelease];
}

autorelease方法的更多相关文章

  1. 2016 - 2 - 20 ARC知识总结(二 autorelease概念及实现)

    首先祝自己生日快乐~23咯~ 一  autorelease的概念 autorelease会像C语言的自动变量那样来对待对象实例.当超出作用域(相当于变量作用域)时,对象的实例release实力方法被调 ...

  2. 【原】你真的懂iOS的autorelease吗?

    或许这个题目起得有点太高调了,不过我只是想纠正一些童鞋对于autorelease的认识,如果能帮到几个人,那这篇文章也就值得了!当然,高手请绕道 本文主要探讨两个方面:(1)autorelease对象 ...

  3. 关于内存管理/set/get方法

    MRC状态下 1 任何继承NSObject的对象,存放于堆控件中,都需要手动管理内存 .2 基本数据类型放到栈中,对象放到堆空间中,内存是有系统管理的.(int\float\enum\struct) ...

  4. autorelease基本概念

    // //  main.m //  01-autorelease基本概念 // //  Created by apple on 14-3-18. //  Copyright (c) 2014年 app ...

  5. Objective-C 【autorelease基本使用】

    ------------------------------------------- NSString中的内存管理问题 由于autoreleasepool的存在,对于内存管理就会很复杂,retain ...

  6. autorelease 的基本使用

    5-autorelease 的基本使用 0,引入 Person *p = [Persom new];[p release]; [p run]; [p run]; // 希望不立即释放,待 run执行完 ...

  7. iOS内存管理系列之二:自动释放与便捷方法

    有时候一个所有者创建一个对象后,会立刻将该对象的指针传递给其它所有者.这时,这个创建者不希望再拥有这个对象,但如果立刻给它发送一个release消息会导致这个对象被立刻释放掉——这样其它所有者还没有来 ...

  8. 1218.1——OC中的常见关键字及一些基本方法

    OC常见的关键字介绍: @ 看到这个关键字,我们就应该想到,这是Object-C对C语言的扩展,例如@interface XXX. @interface 声明类 @implementation 实现类 ...

  9. iOS基本内存管理:autorelease和autoreleasepool

    1.autorelease 基本用法 对象执行autorelease方法时会将对象添加到自动释放池中 当自动释放池销毁时自动释放池中所有对象作release操作 对象执行autorelease方法后自 ...

随机推荐

  1. 【贪心+中位数】【新生赛3 1007题】 Problem G (K)

    Problem G Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

  2. 五、MP3文件认识上的几个误区

    1.每帧播放时长都为26ms? 很多博客和文章都提到,Mp3文件每个帧的播放时长(Frame_PlayingTime)是26ms,这个结论是错误的.公式应该是这样的: 一个帧的播放时长=一个帧的采样个 ...

  3. 谈谈javascript的函数表达式及其应用

    我们都知道定义函数的方式有两种,一种是函数声明,另外一种就是函数表达式. 函数声明 语法为:function关键字后跟函数名.例如: function functionName(arg0) { //函 ...

  4. 在SQL中修改数据库名称

    假设SQL Server 2008中有个数据库test,现在要将其改名为zhy步骤:(1) 分离数据库:打开management studio,找到test数据库-->右键-->任务--& ...

  5. MVC之MVCSQO方法查询、排序、分页、投影

  6. C# Winform中执行post操作并获取返回的XML类型的数据

    /// <summary> /// 返回指定日期的订单数据 /// </summary> /// <param name="StartDate"> ...

  7. toj4119HDFS

    In HDFS( Hadoop Distributed File System), each data may have a lot of copies in case of data lose. T ...

  8. P - A + B(第二季水)

    Description          读入两个小于100的正整数A和B,计算A+B.                 需要注意的是:A和B的每一位数字由对应的英文单词给出.             ...

  9. 如何使用NODEJS+REDIS开发一个消息队列

    作者: RobanLee 原创文章,转载请注明: 萝卜李 http://www.robanlee.com MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应 ...

  10. Android 真机调试显示offline

    今天调试程序部署的时候显示设备状态时offline. 然后突然想起来我通过命令行操作过设备. 然后找来一下,如下命令. adb kill-server adb devices