//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