【问题标题】:release or autorelease?释放还是自动释放?
【发布时间】:2011-05-08 16:46:52
【问题描述】:

我应该为 varSecondViewController 使用释放还是自动释放?

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

【问题讨论】:

    标签: iphone objective-c cocoa memory


    【解决方案1】:

    我的经验法则:

    如果你要使用它,然后不再需要引用它,释放它,

    如果你要将它传回给调用者(即返回它),自动释放它。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        在这种情况下,release 最有意义。

        【讨论】:

          猜你喜欢
          • 2010-09-24
          • 2011-11-09
          • 2011-05-03
          • 1970-01-01
          • 2011-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多