一个 viewController 被推入另一个 viewController 后会发生啥
Posted
技术标签:
【中文标题】一个 viewController 被推入另一个 viewController 后会发生啥【英文标题】:What happens after a viewController is pushed into another viewController一个 viewController 被推入另一个 viewController 后会发生什么 【发布时间】:2012-04-05 14:16:37 【问题描述】:我只是在编程时想知道。我有一个创建 childViewController 实例的 rootViewController。这个 childVC 通过 [self.navigationController pushViewController:childVC] 从另一个 childViewController(比如 childVC2)推送到我的 rootViewController。现在我想知道我的 childVC2 实例会发生什么。它会被释放吗?因为当从 childVC 返回 childVC2 时,我创建了一个 childVC2 的新实例并将其推送到我的 rootViewController 中。显然,我对 childVC2 的早期实例没有任何用处,那么它会发生什么,或者我可以手动释放它吗?
【问题讨论】:
【参考方案1】:是的,如果你分配了 ViewController,你必须释放它.. 推送会将其引用计数增加 1,因此你必须确保将其弹出以减少引用计数.. 并创建实例在 .h 中定义它,并在创建时这样做
if(yourViewController)
[yourViewContoller release];
yourViewController = [yourViewControllerClass alloc] init];
另一种选择是让它自动释放,在这种情况下你不负责释放 ViewController
yourViewController = [yourViewControllerClass alloc] init]autorelease];
【讨论】:
谢谢!但如果我使用 ARC,我的程序会自动为我做这件事,对吗? 是的,如果您使用 ARC,请不要担心释放对象。ios 会处理它。以上是关于一个 viewController 被推入另一个 viewController 后会发生啥的主要内容,如果未能解决你的问题,请参考以下文章
ViewController - (0,0) 处的主视图元素被导航栏遮挡
我们如何在不将 ViewController 对象推入其中的情况下将对象分配给 `UINavigationController`。
如何判断我的 ViewController 何时再次成为栈顶?