论坛首页 移动开发技术论坛

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

浏览 2316 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-06-23  
iOS
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进行内存泄露调试
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics