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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 亮~ 中级黑马   /  2014-6-24 20:01  /  884 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.autorelease的基本用法
1> 会将对象放到一个自动释放池中
2> 当自动释放池被销毁时,会对池子里面的所有对象做一次release操作
3> 会返回对象本身
4> 调用完autorelease方法后,对象的计数器不变
2.autorelease的好处
1> 不用再关心对象释放的时间
2> 不用再关心什么时候调用release
3.autorelease的使用注意
1> 占用内存较大的对象不要随便使用autorelease
2> 占用内存较小的对象使用autorelease,没有太大影响
4.错误写法
1> alloc之后调用了autorelease,又调用release
@autoreleasepool
{
    // 1
    Person *p = [[[Person alloc] init] autorelease];
    // 0
    [p release];
}
2> 连续调用多次autorelease
@autoreleasepool
{
    Person *p = [[[[Person alloc] init] autorelease] autorelease];
}
5.自动释放池
1> 在iOS程序运行过程中,会创建无数个池子。这些池子都是以栈结构存在(先进后出)
2> 当一个对象调用autorelease方法时,会将这个对象放到栈顶的释放池
6.自动释放池的创建方式
1> iOS 5.0前
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[pool release]; // [pool drain];
2> iOS 5.0 开始
@autoreleasepool
{
   
}
*/
#import <Foundation/Foundation.h>
#import "Person.h"
int main()
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
   
    Person *pp = [[[Person alloc] init] autorelease];
   
    [pool release]; // [pool drain];
   
    @autoreleasepool
    {
   
        // 1
        Person *p = [[[[Person alloc] init] autorelease] autorelease];
        
        // 0
        // [p release];
    }
   
    return 0;
}
void test()
{
    @autoreleasepool
    {// { 开始代表创建了释放池
        
        // autorelease方法会返回对象本身
        // 调用完autorelease方法后,对象的计数器不变
        // autorelease会将对象放到一个自动释放池中
        // 当自动释放池被销毁时,会对池子里面的所有对象做一次release操作
        Person *p = [[[Person alloc] init] autorelease];
        
        p.age = 10;
        
        
        
        @autoreleasepool
        {
            // 1
            Person *p2 = [[[Person alloc] init] autorelease];
            p2.age = 10;
            
            
        }
        
        
        Person *p3 = [[[Person alloc] init] autorelease];
        
        
    } // } 结束代表销毁释放池
}

2 个回复

正序浏览
ios风痕 发表于 2014-6-24 21:32
不是提问就不要放在提问版块,放在资源共享或者其他版块

好吧!!!
回复 使用道具 举报
不是提问就不要放在提问版块,放在资源共享或者其他版块
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马