Object-C 基础之8 — 内存管理(1)

 

   自动释放池,在object-c模块中,发挥着重要作用,能够帮助我们清理很多内存。但是它也不是万能的,也必须要合理小心的使用。

 

   本文通过一个示例代码,来介绍下自动释放池的用法和注意事项。

 

 

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; MemFoo *pMem=[[MemFoo alloc]init]; NSLog(@"aaaaa retaincount: %d", [pMem retainCount]); [pool drain]; pool=[[NSAutoreleasePool alloc]init]; [pMem autorelease]; //不会增加引用计数 NSLog(@"bbbbb retaincount: %d",[pMem retainCount]); [pMem retain]; NSLog(@"ccccc retaincount: %d",[pMem retainCount]); [pool drain]; NSLog(@"ddddd retaincount: %d",[pMem retainCount]); [pMem release]; //必须要自己主动释放一次 

 

运行结果如下所示:

 

2011-03-22 23:39:18.185 MemoryTest[478:a0f] aaaaa  retaincount: 1

2011-03-22 23:39:18.187 MemoryTest[478:a0f] bbbbb  retaincount: 1

2011-03-22 23:39:18.188 MemoryTest[478:a0f] ccccc  retaincount: 2

2011-03-22 23:39:18.188 MemoryTest[478:a0f] ddddd  retaincount: 1

 

 

所以,除了依赖于自动释放池外,对于额外的增加引用,必须由自己去亲自释放。

 

你可能感兴趣的:(Object-C 基础之8 — 内存管理(1))