實際開發中關於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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章