首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Iphone >

iPhone应用程序的内存储器管理学习

2012-09-14 
iPhone应用程序的内存管理学习1) 两种内存管理中常犯的错误* 过早释放(premature deallocation)过早释放了

iPhone应用程序的内存管理学习
1) 两种内存管理中常犯的错误
* 过早释放(premature deallocation)过早释放了仍有程序应用的内存块
* 内存泄露(memory leaks)未释放已无程序应用的内存块

2) Object C中的内存分配不使用malloc(size)/free(buffer)这样的方式,而是用对象的alloc和dealloc方法来进行分配和释放,但对象不接受来自外部的dealloc消息,而是通过引用计数来控制。

3) 可以通过Class *instance=[[[Class alloc] init] autorelease]创建自动释放的对象,该对象指针会加入NSAutoreleasePool创建的队列中进行管理。另外:自动释放的对象进行 instance release会导致double free错误

4) 对象赋值的时候要进行retain,如:

Class *a=[[Class alloc] init];
Class *b = a;
[b retain]
[a release]
a=nil;

5) 对象成员也是对象的,需要在对象的dealloc函数中对成员对象的进行手工释放,后在调用对象父类的dealloc, [super dealloc]

遗留问题:
1) 使用Instruments进行内存泄露调试

热点排行