-
2011-05-15
Objective c 内存管理
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://husu-azhong.blogbus.com/logs/128416376.html
对于学习objective c的java党而言,内存管理估计是最让人头痛的地方了,因为java有垃圾回收的机制,而objective c 却不同,严格的说,是cocoa touch不支持垃圾回收,需要关注对象释放的问题。
问题在于:并不是所有情况下都需要进行对象释放的,这就给人带来了很多麻烦,你到底该什么时候释放,而什么时候不需要释放呢?
总的来说,当使用 alloc, copy, retain 来创建对象的时候,都需要手动来回收内存。
而下面几种情况则不用
1、通过常数产生的对象。
比如 NSString *mystring=@"zifuchuang";
因为事实上常数是放在一个静态的栈里的,会由系统来自动管理,所以释放了也是白释放。
2、已经autorelease的对象和用构造方法产生的对象
autorelease不用自己释放,这个很容易注意到,但是构造方法产生的对象也不用释放,就容易忽略了
比如
NSString *string = [NSString stringWithString:@"Hello!"];这个是不用释放的
再比如
NSString *urlString = [hostUrl stringByAppendingFormat:@"iosjsp/showBuilder.jsp?pathcode=%@",pathcode];
这个也是不用释放的。
收藏到:Del.icio.us








评论