Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用[Navigation controller,TabBarViewcontroller]再次设置根控制器UIViewController时内存泄漏_Ios_Swift_Memory_Uiviewcontroller_Uinavigationcontroller - Fatal编程技术网

Ios 使用[Navigation controller,TabBarViewcontroller]再次设置根控制器UIViewController时内存泄漏

Ios 使用[Navigation controller,TabBarViewcontroller]再次设置根控制器UIViewController时内存泄漏,ios,swift,memory,uiviewcontroller,uinavigationcontroller,Ios,Swift,Memory,Uiviewcontroller,Uinavigationcontroller,我试图理解为什么我的控制器实例没有被清除 我将HomeTabBarViewControlle嵌入到选项卡栏和导航控制器中。在应用程序发布时,我正在这样做 let rootVC = AppStoryboards.Main.instance.instantiateViewController(withIdentifier: "HomeTabBarViewController") let appDelegate = UIApplication.shared.delegate as! AppDelega

我试图理解为什么我的控制器实例没有被清除

我将HomeTabBarViewControlle嵌入到选项卡栏和导航控制器中。在应用程序发布时,我正在这样做

let rootVC = AppStoryboards.Main.instance.instantiateViewController(withIdentifier: "HomeTabBarViewController")
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = UINavigationController(rootViewController: rootVC)
加载带有第一个控制器(即HomeDashBoardViewController)的HomeTabBarViewController后,我在HomeDashBoardViewController中有一个操作,可导航到StatusViewController控制器

func btnNextAction() {
   let vc = StatusViewController(nibName: "StatusViewController", bundle: nil)
   self.navigationcontroller?.interactivePopGestureRecognizer?.isEnabled = false
   self.navigationcontroller?.pushViewController(vc, animated: true)
}
由于某些逻辑原因,我必须再次加载HomeDashBoardViewController,因此在StatusViewController后退按钮中,我执行以下操作:

  //If I do this self.navigationController?.popToRootViewController(animated: true) its ok.

  let vc = ppStoryboards.Main.instance.instantiateViewController(withIdentifier: "HomeTabBarViewController")
  vc?.selectedIndex = 0
  self.navigationcontroller?.setViewControllers([vc], animated: true)
但是上面的代码正在内存中为HomeTabBarViewController的第一个控制器(即HomeDashBoardViewController)创建多个实例。未清除HomeDashBoardViewController和HomeTabBarViewController的旧实例

我还尝试再次设置窗口根控制器,但出现了相同的问题。您可以在内存图中检查控制器


让vc=ppStoryboards.Main.instance.InstanceViewController(带有标识符:“HomeTabBarViewController”)-在这里,您可以创建新的vc而不是使用现有的,请尝试self.navigationConreoller.popToRootViewController()如果你想清除stack@AlexandrKolesnik但这将转到根视图控制器I意味着您不需要实例化新的vc,您可以从navigationController.viewControllers获得它,并弹出到itI I获得它,但我有多个根视图控制器,有时导航到错误的根控制器您必须实例化根视图控制器只能使用一次,并且只使用它在内存中的地址来防止多次