释放还是自动释放?

loc*_*ope 3 memory iphone cocoa objective-c

我应该为varSecondViewController使用release还是autorelease?

-(IBAction)takeNextStep: (id) sender
{
    SecondViewController *varSecondViewController = [[SecondViewController alloc]     
       initWithNibName:@"SecondViewController" bundle:nil];
    [self.navigationController pushViewController:varSecondViewController animated:YES];
    [varSecondViewController release];
}
Run Code Online (Sandbox Code Playgroud)

Bra*_*rad 12

我的经验法则:

如果您要使用它,然后不再需要它的引用,请释放它,

如果您要将其传递给调用者(即返回它),请自动释放它.


Chu*_*uck 6

autorelease只是一个release延迟到未来的某个时间,除非调用者创建了自己的自动释放池,否则保证至少是当前的调用堆栈.当您需要释放对象以遵循内存管理准则时,通常会使用它,但在调用堆栈中可能仍需要该对象.在这种情况下,您不会返回视图控制器,也无意再直接保持它,因此不需要延迟.你可以release.