代码之家  ›  专栏  ›  技术社区  ›  lockedscope L42

释放还是自动释放?

  •  3
  • lockedscope L42  · 技术社区  · 14 年前

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

    -(IBAction)takeNextStep: (id) sender
    {
        SecondViewController *varSecondViewController = [[SecondViewController alloc]     
           initWithNibName:@"SecondViewController" bundle:nil];
        [self.navigationController pushViewController:varSecondViewController animated:YES];
        [varSecondViewController release];
    }
    
    3 回复  |  直到 14 年前
        1
  •  12
  •   Brad    14 年前

    我的经验法则:

    如果你要使用它,然后不再需要它的参考, 释放 它,

    如果你要把它传给打电话的人(也就是说,把它还给对方), 自动释放酶 它。

        2
  •  6
  •   Chuck    14 年前

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

        3
  •  4
  •   Daniel A. White    14 年前

    release 最有意义。