浏览 2316 次
锁定老帖子 主题:iPhone应用程序的内存管理学习
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-06-23
* 过早释放(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进行内存泄露调试 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |