autorelease基本概念
//
// 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基本概念的更多相关文章
- 2016 - 2 - 20 ARC知识总结(二 autorelease概念及实现)
首先祝自己生日快乐~23咯~ 一 autorelease的概念 autorelease会像C语言的自动变量那样来对待对象实例.当超出作用域(相当于变量作用域)时,对象的实例release实力方法被调 ...
- autorelease基本使用
1.autorelease基本概念 autorelease是一种支持引用计数的内存管理方式,只要给对象发送一条autorelease消息,会将对象放到一个自动释放池中,当自动释放池被销毁时,会对池子里 ...
- iOS开发--引用计数与ARC
以下是关于内存管理的学习笔记:引用计数与ARC. iOS5以前自动引用计数(ARC)是在MacOS X 10.7与iOS 5中引入一项新技术,用于代替之前的手工引用计数MRC(Manual Refer ...
- OC基础(16)
autorelease基本使用 autorelease注意事项 *:first-child { margin-top: 0 !important; } body > *:last-child { ...
- iOS内存管理 ARC与MRC
想驾驭一门语言,首先要掌握它的内存管理特性.iOS开发经历了MRC到ARC的过程,下面就记录一下本人对iOS内存管理方面的一些理解. 说到iOS开发,肯定离不开objective-c语言(以下简称OC ...
- iOS-引用计数与ARC(转)
以下是关于内存管理的学习笔记:引用计数与ARC. iOS5以前自动引用计数(ARC)是在MacOS X 10.7与iOS 5中引入一项新技术,用于代替之前的手工引用计数MRC(Manual Refer ...
- OC-ARC,类扩展,block
总结 标号 主题 内容 一 autorelease autorelease基本概念/自动释放池/autorelease基本使用 二 autorelease注意事项 注意点/应用场景 三 ARC 什么是 ...
- OC 内存管理-02 autorelease 概念 以及用法
(1) @autoreleasepool { }//自动释放池代表,池子将要被销毁,对池子中所有的对象进行一次release操作 (2) 不管你这个对象时在@autoreleasepool 之内创建的 ...
- RunLoop和autorelease的一道面试题
有这么一道iOS面试题 以下代码有没有什么问题?如果有?如何解决? for (int i = 0; i < largeNumber; i++) { NSString *str = [NSStri ...
随机推荐
- 【转】Windows7系统下硬盘安装全新更高版本Windows7
原文地址:http://jingyan.baidu.com/article/656db918aee053e381249c06.html 1.下载windows7 7600 ISO镜像(RC或RTM), ...
- 文件上传(springMVC+ckeditor)
1.首先添加springMVC文件上传的jar commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar (maven项目可以使用 <dependenc ...
- maven相关概念
1.maven仓库分为:本地仓库,远程仓库.远程仓库分为私服.中央仓储和其他公共库. 2.mvn clean install 部署到本地仓库 3.mvn clean deploy 部署到远程仓储 4. ...
- 利用poi开源jar包操作Excel时删除行内容与直接删除行的区别
一般情况下,删除行时会面临两种情况:删除行内容但保留行位置.整行删除(删除后下方单元格上移).对应的删除方法分别是: void removeRow(Row row)//Remove a row fro ...
- 红米note3的wifi断流或假死
红米note3的wifi断流/假死 日常使用note3的时,比如长时间浏览网页,点击一个链接会卡住不动,在等待十几秒之后才恢复.第一反应是不是网络不好?但是这种情况常常出现之后,对比其他的手机,比如价 ...
- sql in查询排序
1.默认下,使用select xxx where in(xx,xx)查询,返回结果是按主键排序的,如果要按in()中值的排列顺序,可以这样做: select * from talbe where ...
- dp和px的转换
/** * dp转px * @param context * @param dp * @return */ public static int dp2px(Context context, float ...
- Lazarus中system.length说明
在system单元中我们有Length专门用来获取字符串宽度和数组宽度,下面例子来介绍他的功能. 定义: function Length( S: AStringType ):Integer; fu ...
- android ArrayAdapter 如何动态更改数据
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示,使用adpater与listview捆绑后,有时希望在程序使用过程中能动态的更改l ...
- 【转】unity开发android游戏(一)搭建Unity安卓开发环境
http://blog.csdn.net/chenggong2dm/article/details/20654075 1,下载安装Java的JDK: http://www.oracle.com/tec ...