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。