自动释放池的使用

//6.关闭ARC后,使用形式则不同,建立一个或多个自动释放池

    //只有放入自动释放池中的对象,使用[pool drain]时对象的引用技术才会-1

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    ABC *abc = [[ABC alloc]init];

    NSLog(@"初始化对象以后的引入计数器数%lu",[abc retainCount]);

    [pool drain]; //关闭释放池

    NSLog(@"释放自动释放池以后的引入计数器数%lu",[abc retainCount]);

    //只有将对象添加到自动释放池后才能释放对象

    pool = [[NSAutoreleasePool alloc]init];

    [abc autorelease];  //将对象放入自动释放池

    NSLog(@"对象放入自动释放池以后的引入计数器数%lu",[abc retainCount]);

    //retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1

    [abc retain];

    NSLog(@"对象进行retain以后的引入计数器数%lu",[abc retainCount]);

    [pool drain];

    NSLog(@"释放自动释放池以后的引入计数器数%lu",[abc retainCount]);




输出结果 : 

2015-11-10 23:30:29.104 内存管理[62729:14089337] 初始化对象以后的引入计数器数1

2015-11-10 23:30:29.105 内存管理[62729:14089337] 释放自动释放池以后的引入计数器数1

2015-11-10 23:30:29.105 内存管理[62729:14089337] 对象放入自动释放池以后的引入计数器数1

2015-11-10 23:30:29.106 内存管理[62729:14089337] 对象进行retain以后的引入计数器数2

2015-11-10 23:30:29.106 内存管理[62729:14089337] 释放自动释放池以后的引入计数器数1

Program ended with exit code: 0


可以选择,但是别选择放弃
原文地址:https://www.cnblogs.com/hangdada/p/4982991.html