A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangganghua 中级黑马   /  2015-9-20 21:47  /  604 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

三,自动释放池autorelease的介绍:
    1,自动释放池是程序在运行期间,创建的一些管理对象的池子.这些池子是一种特殊的栈结构.

    2,自动释放池,是如何管理对象内存的?
        在自动释放池自身释放的时候,会对池子中的每个对象发送一次release消息;注意,对每个对象只发送一次release消息;

    3,如何创建一个自动释放池?
        @autoreleasepool {
   
            }
    4,如何将一个对象加入到池子中?
        在池子的代码块中,调用对象的autorelease方法;就可以将这个对象加入到这个池子中.

        例如:
            Person *p = [Person new];
            @autoreleasepool {
                [p autorelease];  //加入自动释放池,
            }



5,autorelease的使用注意:
    1),必须在自动释放池的代码块中调用autorelease方法,对象才会加入池子中;
    2),尽量避免对大内存使用该方法,因为这种是延迟释放机制;
    3),不要把大量循环操作放到同一个 @autoreleasepool 之间,这样会造成内存峰值的上升;
    4),不要对同一个对象连续调用多次autorelease方法;
    5),autorelease和release只能使用一个;

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马