《黑马程序员》 autoreleasepool自动释放池(Objective - c语法)

一 : autoreleasepool的基本使用

     autoreleasepool{

         ①    在这个代码块中代表创建了一个自动释放池

         ②    autorelease  方法会返回对象本身

         ③    调用完autorelease方法后,对象的计数器不变

         ④    autorelease会将对象方法一个自动释放池中

         ⑤    当自动释放池被销毁时会对池子里面的所有对象做一次release操作

}

 二 : autorelease的基本用法

  ①  会将对象放到一个自动释放池中。

  ②  自动释放池销毁时,会对池子里面的所有对象做一次release操作

  ③  会返回对象本身。

  ④  autorelease只是延时了对象释放的时间
 

三  : autorelease的好处

   ①   不用再关心对象的释放时间

   ②  不在关心什么时候调用了release

 

四 : autorelease的使用注意

   ①  占用内存较大的对象不要随便使用autorelease

   ②  占用的内存较小的对象使用autorelease,没有太大影响。

   ③  不能连续写两次autorelease,因为池子在销毁时,会做两次release操作,造成野指针错误

错误写法:都会造成野指针

 

五 :自动释放池

  ①   在ios程序运行过程中,会创建无数多个池子,这些池子都是以栈的结构存在,(先进后出)

  ②   当一个对象调用了autorelease方法时,会将这个对象方法放到栈顶的释放池

六  : 其他注意点

  ①   系统自带的方法里面没有包含alloc、new、copy、说明已经autorelease过的对象

  ②   开发中经常会提供一些方法快速创建一个已经autorelease过的对象

类方法实现

  ①  在对象方法中创建已经autorelease过的对象时,要用self来创建对象

   ②  不管子类谁调用这个方法,就会返回子类相应的对象

主函数

 

带参数的

posted @ 2015-03-24 21:23  画梦醉红尘  阅读(300)  评论(0编辑  收藏  举报