@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