黑马程序员技术交流社区

标题: 关于自动释放池的总结 [打印本页]

作者: 红火恍惚    时间: 2015-8-28 21:43
标题: 关于自动释放池的总结
自动释放池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只能使用一个






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2