在返回之前释放局部变量?

Sam*_*urn 5 release objective-c local-variables

在objective-c中,我知道您需要释放您初始化/保留/复制的任何内容.在return声明之前我需要这样做吗?我想要理解release明确的呼叫,而不是使用autorelease.

-(void) someMethod
{
  AnotherClass* ac = [[AnotherClass alloc] init];
  if([ac somethingHappens]){
    // Do I need to release ac here?
    return;
  }
  [ac doSomethingElse];
  [ac release];
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Ste*_*ton 3

是的,您需要释放变量,但是您退出该方法。

这非常简单:当您初始化某些内容时,保留计数就会增加。当你释放它时,它会减少。当它达到零时,它会自动释放(释放)。

在上面的代码中,您初始化了变量,但如果它遵循返回路径,则变量保留计数永远不会为零,因此永远不会被释放。