我在导航控制器的顶部有一个模式视图。
我希望破坏整个堆栈并重新创建一个新堆栈(重新加载)。
但是,当将新的分配给window.rootViewController
时,在运行时会出现警告,并且不会释放视图控制器。
[为了使事情变得更复杂,我在重新加载后自动“自动”导航到模态视图控制器,并且 我已附上reprex,以演示将要出现的问题。例如。如果按原样运行,则在iOS 13上,计数器会从1
跳到3
,而在iOS 12上,计数器从1
跳到2
。两者都在泄漏内存(某些或所有视图控制器未卸载)。
主要问题是,不管您如何替换视图层次结构,您的presented VC都将关闭,这将向您的“ pushedVC”发送一条viewWillAppear
消息...此时,“ pushedVC”将立即加载并重新显示“ triggerVC”
您可能想要做的是:
jumpToModalVC
等于false,直到要使用它jumpToModalVC
设置为true并重建/重置层次结构注意:
从每个VC的viewWillAppear
进行的链锁调用几乎总是导致:
开始/结束外观转换的不平衡呼叫
为避免这种情况,最好从viewDidAppear
触发触发选择>
[如果需要,您可以将我添加为GitHub存储库上的“协作者”(我的GitHub用户ID为DonMag,我可以将所做的更改作为新分支推送。