基本用法;
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. sshd安全性能优化

    sshd服务是远程登录服务,默认端口为22,对于其优化一是为了增加服务器的安全,避免暴力破解:二是为了加快速度连接,减少不必要的带宽的浪费. sshd服务的配置文件为/etc/ssh/sshd_con ...

  2. SqlBulkCopy使用介绍以及注意事项

    SqlBulkCopy,微软提供的快速插入类,针对大批量数据操作,此类效果明显有所提升,以下是微软官方解释: Microsoft SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具 ...

  3. sql必知必会(第四版) 学习笔记二 视图

    本书用到的几个表的建表sql语句如下: --销售产品供应商 CREATE TABLE Vendors ( vend_id varchar(20) not null, vend_name varchar ...

  4. Git使用过程

    Git-------目前世界上最先进的分布式版本控制系统(没有之一) 什么是版本控制系统? 说简单点,就是一个文件,对其增加.删除.修改都可以被记录下来,不仅自己可以修改,其他人也可以进行修改 每次对 ...

  5. NSDictionary初始化,使用@{}方法,插入nil时会报空指针异常

    由于今天在NSDictionary初始化的时候出现Crash异常,故记录一下,避免下次再犯. 在Objective-C中,NSDictionary初始化的方法有很多种 方法1: [NSDictiona ...

  6. css基础之 id和选择器

    id 和 class 选择器 如果你要在HTML元素中设置CSS样式,你需要在元素中设置"id" 和 "class"选择器. (1) id 选择器 id 选择器 ...

  7. hadoop高可用集群搭建小结

    hadoop高可用集群搭建小结1.Zookeeper集群搭建2.格式化Zookeeper集群 (注:在Zookeeper集群建立hadoop-ha,amenode的元数据)3.开启Journalmno ...

  8. HDU 1088 - Write a simple HTML Browser

    直接看sample input = = 又一道模拟. #include <iostream> #include <string> #include <cstdio> ...

  9. SDP协议

    会话描述协议(SDP)为会话通知.会话邀请和其它形式的多媒体会话初始化等目的提供了多媒体会话描述.它只是用来描述,而不是一种传输协议.举例,在SIP协议的Message Header的Content- ...

  10. python操作redis-事务

    #!/usr/bin/python #!coding: utf-8 import redis import sys if __name__=="__main__": try: co ...