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进行内存泄露调试