黑马程序员---autorelease方法

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

基本用法;

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];

}

时间: 2024-10-13 23:23:55

黑马程序员---autorelease方法的相关文章

黑马程序员——hashCode方法的作用,java内存泄露

hashCode方法的作用:当有一个对象要存入hash集合的时候,JVM首先会调用hashCode方法获取该对象的哈希值,然后根据哈希值找到相应的存储区域,最后取出该区域的所有元素与该对象进行equals比较,如果相等,不存入该元素,否则,存入.这样不用遍历集合中的所有元素就能的到我们想要的结果,提高了查找的效率.但是如果不覆写hashCode方法的话,相同的对象可能会存储在HashSet集合中,虽然他们equals比较相同,但他们的内存区域不同的话,就不会进行equals比较了.为了让两个相同

黑马程序员——TreeMap方法 演示操作

TreeMap方法  演示操作 import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.TreeMap; public class TreeMapDemos { public static void main(String[] args) { TreeMap<Studenti,String> hm = new TreeMap<Studenti,St

黑马程序员----description方法

description方法有两种:- description方法和+ description方法 1.-description方法 使用NSLog和%@输出某个对象时,会调用对象的 - description方法,并拿到返回值(NSString *)进行输出(默认为:<对象名:内存地址>) 2.+ description方法 使用NSLog和%@输出某个类对象时,会调用类对象的+ description方法,并拿到返回值(NSString *)进行输出(默认为:类名) 3.通过修改NSLog的

黑马程序员 03-类方法

———Java培训.Android培训.iOS培训..Net培训.期待与您交流! ——— 1.基本概念 直接可以用类名来执行的方法(类本身会在内存中占据存储空间,里面包含有类\对象方法的列表) 2.类方法和对象方法对比 (1) 对象方法 1> 以减号 - 开头 2> 只能让对象调用,没有对象,这个方法根本不可能被执行 3> 对象方法可以访问实例变量(成员变量) (3) 类方法 1> 以加号 + 开头 2> 只能用类名调用,对象不能调用 3> 类方法不能访问实例变量(成员

黑马程序员 10-OC方法与函数的区别

———Java培训.Android培训.iOS培训..Net培训.期待与您交流! ——— 方法与函数的区别 1.方法: 1.对象方法都是以减号 - 开头  2.对象方法的声明必须写在@interface @end之间   3.对象方法的实现必须写在@implementation @end 之间 4.对象方法只能由对象调用  5.对象方法归类\对象所有 6.类方法都是以加号 + 开头,其他规则和对象方法相同 7.类方法既可以被类(类名)调用,也可以被对象调用 2.函数: 1.函数归文件所有,跟对象

&lt;&lt;黑马程序员&gt;&gt;description方法

- (NSString *)description方法 ① 默认情况下当使用NSLog和%@输出某个对象时,默认输出类名+对象地址 ② 就会调用对象的- (NSString *)description方法 ③  拿到- (NSString *)description方法的返回值进行输出,默认是类名+对象地址 + (NSString *)description方法 ① 默认情况下当使用NSLog和%@输出某个类对象时,默认输出类名 ② 就会调用对象的+ (NSString *)descriptio

黑马程序员----对象方法和类方法

一.对象方法 1> 减号 - 开头 2> 只能由对象来调用 3> 对象方法中能访问当前对象的成员变量(实例变量) 二.类方法 1> 加号 + 开头2> 只能由类名来调用3> 类方法中不能访问成员变量(实例变量) 注:可以允许类方法和对象方法同名 三.类方法的好处及使用场合 1> 类方法不依赖于对象(不创建对象也可以调用),执行效率高 2> 能用类方法,尽量用类方法 3> 场合:当方法内部不需要使用成员变量时,就可以改为类方法 代码练习: 运行结果:

黑马程序员-OC学习笔记之autorelease与自动释放池

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.autorelease autorelease与release相似,是OC中的一个对象方法.这两个方法都能把对象的引用计数器减1,但是release是一个精确的减1,对对象的操作只能在release之前进行,如果是在之后,就会出现野指针错误:而autorelease是一个不精确的引用计数器减1,当给对象发送autorelease消息时,对象就会被放到自动

黑马程序员_学习IOS之字典常用的方法

字典是无序的 数组是有序的.字典分为:可变字典和不可变字典  不可变字典对象 NSDictionary * dict = [[NSDictionary alloc]initWithObjectsAndKeys:@"one",@"1",@"two",@"2",@"three",@"3",@"four",@"4", nil]; //value = ke

黑马程序员_01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)

------- android培训.java培训.期待与您交流! ---------- Java语言主要由5中符号组成 标识符:数字.字母.美元符.下划线(注意不能数字开头) 关键字:goto和const保留了它们,但是Java没有使用. 运算符:注意运算符优先级(左结合和右结合要注意) 分隔符:注意+号可以分割字符串. 注释:三种注释. 数据类型与变量 常量: 整型 浮点型 字符:注意后面跟三个八进制(\ddd)和 四位unicode码(\u8bf7) (不区分大小写) 字符串 布尔型 变量: