Objective-C内存管理
?
1.对象的生命周期包括诞生(通过alloc或new方法实现)、生存(接收消息和执行操作)、交友(借助方法的组合和参数)以 ?及当它们的生命结束时最终死去(被释放),当对象的生命周期结束时,它们的原材料(内存)将被回收以供新的对象使用。
?
2.引用计数:
当使用alloc、new方法或者通过copy消息(生成接收对象的一个副本)创建一个对象时,对象的保留计数器值被设置为1;
要增加对象的保留计数器值,可以给对象发送一条retain消息,
要减少对象的保留计数器值,可以发一条release消息。
当一个对象的保留计数器归0时自动向对象发送一条dealloc消息。dealloc是自动调用的,切记手动调用,此方法可以重写。
NSAutoreleasePool *pool;pool = [[NSAutoreleasePool alloc] init];int i;for(i=0;i<10000; i++){id object = [someObject objectAtIndex: i];NSString *desc = [object description];//and do somethine with the descriptionif(i %1000 == 0){[pool release];pool = [[NSAutoreleasePool alloc] init]}}?
?自动释放池以栈的形式实现:当你创建一个新的自动释放池时,它将被添加到栈顶。接收autoreales消息的对象将被放入最顶端的自动释放池中。
?
10.注意:如果开发Iphone软件,则不能使用垃圾回收,实际上,在编写iphone程序时,苹果公司建议不要在代码中使用autorelease方法,同时还要避免使用创建自动释放对象的便利函数.