//

//  main.m

//  01-autorelease基本概念

//

//  Created by apple on 14-3-18.

//  Copyright (c) 2014年 apple. All rights reserved.

//

//内存管理原则(配对原则):只要出现了new,alloc,retain方法,就要配对出现release,autorelease

//对象存入到自动释放池中,当这个池子被销毁的时候他会对池子中所有的对象进行一次release操作

//怎么把对象存到池子中

#import <Foundation/Foundation.h>

#import "Person.h"

int main(int argc, const char * argv[])

{

/* 示例1

//自动释放池

//大括号代表池子的作用域

@autoreleasepool

{

//release 功能 retaincount - 1

//1

Person * p = [[Person alloc] init];

//        [p release];//retainCount立即 -1

[p autorelease]; //autorelease方法的作用只是将对象放入到池子中,然后返回一个self

NSLog(@"asdfasdf");

}//代表,池子将要被销毁,对池子中所有的对象进行一次release操作,[p release] 0

*/

/*

//autoreleasepool我么可以自己随意的创建

// 示例2

//1//不管你这个对象时在@autoreleasepool 之内创建的还是在之外创建的,只要你在池子中调用了autorelease那么这个对象就会被放入到池子中

Person * p = [[Person alloc ] init];

@autoreleasepool {

[p autorelease];

}//p 0

*/

// 示例3

/*

//1 只有在自动释放池的作用域中调用对象的autorelease方法才能够正确的讲对象放入到池子中

Person * p = [[Person alloc] init];

[p autorelease];

NSLog(@"aaaa");

@autoreleasepool {

}

NSLog(@"bbb");

*/

//示例4

/*

// 1

Person *  p = [[Person alloc] init];

@autoreleasepool {

//存入多少次auto re le a se调用多少次re le a se

[p autorelease];//加入第一次

[p autorelease];//加入第二次

NSLog(@"abc");

}//[p release]0 [p release](第二次野指针操作)

NSLog(@"cbd");

*/

//示例5

/*

//1

Person * p = [[Person alloc] init];

@autoreleasepool {

@autoreleasepool {

//在哪个池子调用auto re le a se作用域就在哪个池子

[p autorelease];

}//[p release] 0

}

*/

Person * p = [[Person alloc] init];

@autoreleasepool {

[p autorelease];

@autoreleasepool {

[p autorelease];

}//[p release] 0

}//[p release];

return 0;

}

autorelease基本概念的更多相关文章

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

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

  2. autorelease基本使用

    1.autorelease基本概念 autorelease是一种支持引用计数的内存管理方式,只要给对象发送一条autorelease消息,会将对象放到一个自动释放池中,当自动释放池被销毁时,会对池子里 ...

  3. iOS开发--引用计数与ARC

    以下是关于内存管理的学习笔记:引用计数与ARC. iOS5以前自动引用计数(ARC)是在MacOS X 10.7与iOS 5中引入一项新技术,用于代替之前的手工引用计数MRC(Manual Refer ...

  4. OC基础(16)

    autorelease基本使用 autorelease注意事项 *:first-child { margin-top: 0 !important; } body > *:last-child { ...

  5. iOS内存管理 ARC与MRC

    想驾驭一门语言,首先要掌握它的内存管理特性.iOS开发经历了MRC到ARC的过程,下面就记录一下本人对iOS内存管理方面的一些理解. 说到iOS开发,肯定离不开objective-c语言(以下简称OC ...

  6. iOS-引用计数与ARC(转)

    以下是关于内存管理的学习笔记:引用计数与ARC. iOS5以前自动引用计数(ARC)是在MacOS X 10.7与iOS 5中引入一项新技术,用于代替之前的手工引用计数MRC(Manual Refer ...

  7. OC-ARC,类扩展,block

    总结 标号 主题 内容 一 autorelease autorelease基本概念/自动释放池/autorelease基本使用 二 autorelease注意事项 注意点/应用场景 三 ARC 什么是 ...

  8. OC 内存管理-02 autorelease 概念 以及用法

    (1) @autoreleasepool { }//自动释放池代表,池子将要被销毁,对池子中所有的对象进行一次release操作 (2) 不管你这个对象时在@autoreleasepool 之内创建的 ...

  9. RunLoop和autorelease的一道面试题

    有这么一道iOS面试题 以下代码有没有什么问题?如果有?如何解决? for (int i = 0; i < largeNumber; i++) { NSString *str = [NSStri ...

随机推荐

  1. CSS系列:表达式(Expression)`淘汰`

    概述 CSS表达式是动态设置CSS属性的强大(但危险)方法.Internet Explorer从第5个版本开始支持CSS表达式. 兼容性 expression方法在其它浏览器中不起作用,因此在跨浏览器 ...

  2. Android基础知识

    一.四大组件 Activity(活动).Service(服务).BroadcastReceiver(广播器).Content Provider(内容提供器) 二.五大布局 LinearLayout(线 ...

  3. 嵌入式Linux的FTP服务端软件(stupid-ftpd)

    我自己试没成功 http://blog.csdn.net/gzshun/article/details/7358651

  4. C#winform中DataGridView常用的属性

    1.AllowUserToAddRows属性:指示是否向用户显示添加行的选项 AllowUserToOrderColumns属性:指示是否允许通过手动对列重新定位 AllowUserToResizeC ...

  5. Bootstrap页面布局18 - BS导航路径以及分页器

    导航路径:又叫“面包屑”,功能是让用户知道所处的位置. <!--面包屑--> <ul class='breadcrumb'> <li><a href='#'& ...

  6. 20145317《Java程序设计》实验三

    20145317彭垚 实验三<敏捷开发与XP实践> 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 一. 使用git 上传代码 找到Demo1所在文件夹,右键 ...

  7. ContentType Office

    Office对应ContentType 当从浏览器返回一个文件时,需要指定ContentType,以下是Office2007对应的值: "application/vnd.openxmlfor ...

  8. jsp页面揣出现Invalid action class configuration that references an unknown class解决方案

    jsp页面中,增加和修改用了同一个页面,能正常增加,却不能修改,后来发现页面中有一个hidden的id, 这个input的name写成name="designType.id"时就会 ...

  9. WGZX:javaScript 学习心得--2

    转贴javascript心得(二) 标签: javascriptajaxweb开发htmlfirefox框架 2008-09-11 10:56 636人阅读 评论(0) 收藏 举报  分类: UI(2 ...

  10. 弄清const与指针、引用之间的关系

    const和 define在常量定义上的差别 在C++中,我们可以使用const 或者 宏define来定义常量.但是C++鼓励使用const定义常量,而不是宏define.原因有很多. 1.defi ...