当一个视图控制器被推送到另一个视图控制器后会发生什么?

3

在编程时我有一个疑问。我有一个根视图控制器(rootViewController),它创建了一个子视图控制器的实例(childViewController)。这个子视图控制器通过[self.navigationController pushViewController:childVC]从另一个子视图控制器(假设是childVC2)推到了我的根视图控制器。现在我想知道我的childVC2实例会发生什么。它会被释放吗?因为当从childVC返回childVC2时,我会创建一个新的childVC2实例并将其推入我的根视图控制器。显然,我不再需要早期的childVC2实例,所以它会发生什么或者如何手动释放它?

1个回答

1

如果你分配了 ViewController,你就必须释放它... push 操作会将其引用计数加 1,所以你必须确保在 pop 操作中将其弹出以减少引用计数... 对于创建实例,请在 .h 中定义它,并在创建时这样做

if(yourViewController)
  [yourViewContoller release];

yourViewController = [yourViewControllerClass alloc] init];

另一个选择是使其自动释放,在这种情况下,您不需要负责释放 ViewController

yourViewController = [yourViewControllerClass alloc] init]autorelease];

谢谢!但是如果我使用ARC,我的程序会自动为我完成这个任务,对吗? - rajomato
如果您正在使用ARC,不必担心释放对象的问题。iOS会自动处理它。 - Malek_Jundi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接