@atuoreleases 关键字的使用

1.作用;实质是延长对象的release时间

2. 语法:

@autoreleasepool

{

  类型 变量*=[[[类型 alloc] init] autorelease];

  //....
//

NSSAutoreleasePool *pool=[[NSSAutoreleasePool alloc] init];
//代码
[pool release];

 

解析:第一种,首先会创建一个autorelease的池子(autoreleasepool),待创建变量的时候就将创建的对象放入autorelease池子中

         最后当{}结束时,就将池子和池子中的所有对象release一次

     第二种:在ios5.0 之前使用的方式

       先定义一个自动释放池,将代码写在这个池子对象创建和release之间,当池子对象release了,里面的oc对象也跟着release

 

3.在实际的开发中,通常将创建一个autorelease对象封装到类方法中,这样能够快速的调用方法创建对象,不用编写长长的定义

   代码,但是创建对象的时候最好不用类名,用self这样更佳灵活,谁调用这个方法,就创建谁的对象

   [[self alloc]init]autorelease]

4.注意:ARC模式下不能使用NSAutoReleasePool方式

    在自动释放池中间不要用循环去创建对象,这样会导致内存峰值上升

    尽量避免对大内存使用该方法,这种延迟机制,还是尽量少用

    sdk中的静态方法一般是自动释放的,不用我们自己在release

转载于:https://www.cnblogs.com/hui1107464497/p/4509471.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值