实际开发中关于autorelease的运用

来源:互联网 发布:suse linux 安装ftp 编辑:程序博客网 时间:2024/06/08 17:48

autorelease与release

autorelease的功能和release的功能一样,同样是将retaincount -1。区别在于release能够精确减1,且release操作之后不能再对对象进行操作,而autorelease则能够延迟release对象。

autoreleasepool:对象存放到自动释放池中,当这个池子被销毁的时候他会对池子中所有的对象进行一次release操作。


Person *p = [[person alloc]init];

@autoreleasepool

{

[p autorelease];   autorelease方法的作用就是将对象放入到池子中,然后返回一个self。

}



          而在实际开发当中又会经常碰到上面这样的情况,当你在一个方法当中需要创建一个对象,并且需要返回这个对象时,这个时候如果使用release,精确的释放掉对象,那么就会造成野指针操作。而这时就必须使用延迟释放的autorelease来进行释放food对象。


实际上,相对于[NSString stringwithformat:1.0]  , [NSArray arraywithobjects:]这一类构造函数,返回的对象都是autorelease。

0 0