当前位置: 代码迷 >> Iphone >> iPhone应用程序的内存储器管理学习
  详细解决方案

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

热度:71   发布时间:2016-04-25 06:29:34.0
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进行内存泄露调试
  相关解决方案