zoukankan      html  css  js  c++  java
  • autorelease简介

    autorelease方法的基本作用

      给对象发送一条autorelease消息,会将对象放到一个自动释放池中

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

      会返回对象本身

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

    autorelease的好处

      不用在关心对象释放的时间

      不用再关心什么时候调用release

    autorelease的使用注意

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

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

    自动释放池

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

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

    autorelease的常见错误

      alloc之后调用了autorelease,又调用release

      Person *p = [[[Person alloc] init] autorelease];

      [p release];

    连续调用多次autorelease

      Person *p = [[[[Person alloc] init] autorelease] autorelease];

    autorelease和release使用对比

    使用release

      Book *book = [[[Book alloc] init] autorelease];

      [book release];

    使用autorelease

      Book *book = [[[Book alloc] init] autorelease];

      //不要再调用[book release];

    autorelease的应用场合

      1、一般可以为类添加一个快速创建对象的类方法

      + (id)book {

        return [[[self alloc] init] autorelease];

      }

      外界调用[Book book]就可以获得和使用新建的Book对象,根本不用考虑在什么时候释放Book对象

      2、一般来说,除了alloc、new或copy之外的方法创建的对象都被声明了autorelease

      3、比如下面的对象都已经是autorelease的,不需要再release

      NSNumber *n = [NSNumber numberWithInt:100];

      NSString *s = [NSString stringWithFormat:@"jack"];

      NSString *s2 = @"rose";

  • 相关阅读:
    SpringBoot快速入门(三)
    分布式解决方案
    计算机网络-自顶向下方法第六章
    计算机网络-自顶向下方法第四章
    springcloud记录
    计算机网络-自顶向下方法第三章
    springboot整合kafka
    计算机网络-自顶向下方法第二章
    计算机网络-自顶向下方法第一章
    Spring常用注解【经典总结】
  • 原文地址:https://www.cnblogs.com/saurik/p/4831546.html
Copyright © 2011-2022 走看看