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。