实际开发中关于autorelease的运用

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。

发布了37 篇原创文章 · 获赞 8 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章