内存管理相关方法
cocoa类中的根类NSObject有几个方法(类方法)是对内存进行管理的。
1)alloc方法:为对象分配一块内存空间;当alloc一个对象空间时,retain count加1。
2)dealloc方法:用于释放对象的空间。此方法不必手工调用,系统通过引用计数器(retain count)来判断是否调用该方法:当对象的retain Count的计数大于或者等于1的时候,系统会继续维持这个对象。当对象的retain Count为0的时候,系统会释放这个对象,并回收它占得内存空间。
3)retain方法:使retain count加1。
4)release方法:告诉系统已经使用完这个变量了(已经不需要它了),retain Count减1。
autorelease一般用在stringWithString这样比较爽的对象创建+初始化的静态函数中,跟release差不多,唯一的区别是你不用手工去release了,相当于在后台有一个机器人帮你release。
为了防止内存泄露。无论什么时候,我们创建一个对象,或者创建一个对象的拷贝,我们都必须通过release方法释放(谁创建,谁释放)。
★注意:
在研究retain count的时候,我不建议用NSString。因为在下面的语句中,
NSString *str1 = @”constant string”;
str1的retain count是个很大的数字,Objective-C对常量字符串做了特殊处理。
当然,如果你这样创建NSString,得到的retain count依然为1
NSString *str2 = [NSString stringWithFormat:@”123”];
自动释放池
在移动设备上 比如iPhone,iPad,为了节约宝贵的内存资源,不建议使用自动释放池。
From:http://liwpk.blog.163.com/blog/static/36326170201141452244641/