为啥 setViewControllers 不会触发 viewWillDisappear 和 dealloc?
Posted
技术标签:
【中文标题】为啥 setViewControllers 不会触发 viewWillDisappear 和 dealloc?【英文标题】:Why does setViewControllers not trigger viewWillDisappear and dealloc?为什么 setViewControllers 不会触发 viewWillDisappear 和 dealloc? 【发布时间】:2014-06-29 05:43:54 【问题描述】:如果我没有在[detailNavigationController setViewControllers:...]
viewControllers 之前添加[detailNavigationController popToRootViewControllerAnimated:NO]
,那么这些会被推送到setViewControllers
不会收到viewWillDisappear 并且不会被释放。我检查并转发viewWillAppear
、viewDidAppear
等。我还尝试添加automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers
和单独的shouldAutomaticallyForwardAppearanceMethods
以返回YES(即使默认值已经是YES)。那些也没有用。
我可能做错了什么?
【问题讨论】:
你能显示你试图调试的方法的代码吗?没有代码,就很难确定问题出在哪里。 【参考方案1】:在设置ViewControllers之前调用viewcotroller上的autorelease
TestViewController * testView = [[[TestViewController alloc]initWithNibName @"TestViewController" bundle: nil]autorelease];
[self.navigationcontroller setViewControllers: @[testView] animated: YES];
【讨论】:
你怎么知道他们没有使用 ARC? 如果他们使用 ARC,它将自动自动发布以上是关于为啥 setViewControllers 不会触发 viewWillDisappear 和 dealloc?的主要内容,如果未能解决你的问题,请参考以下文章
UINAvigationController -> setViewControllers 导致崩溃
UINavigation setViewControllers:内存分配
如何使用 setViewController:direction:animated 方法
为啥使用 Xamarin 的 MobileServiceClient 单点触控实现的流量不显示在 Fidder/Charles 中
UISplitView 上的 UITableViewController。为啥向下钻取留在第一张桌子上? (使用单点触控)